Не знаю, что я сделал не так, но выдает ошибку, я использую версию Sonoma для MacBook, надеюсь на вашу помощь)
import config
import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types.message import ContentType
import markups as nav
from db import Database
# log
logging.basicConfig(level=logging.INFO)
# init
bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)
db = Database('database.db')
#start
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
if(not db.user_exists(message.from_user.id)):
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id, "Укажите ваш ник:")
else:
await bot.send_message(message.from_user.id, "Вы уже зарегестрированы!", reply_markup=nav.mainMenu)
@dp.message_handler()
async def bot_message(message: types.Message):
if message.chat.type == 'private':
if message.text == 'Профиль':
pass
else:
if db.get_singup(message.from_user.id) == "setnickname":
if(len(message.text) > 15):
await bot.send_message(message.from_user.id, "Никнейм не должен превышать 15 символов")
elif '@' in message.text or '/' in message.text:
await bot.send_message(message.from_user.id, "Никнейм не должен содержать @ или /")
else:
db.set_nickname(message.from_user.id, message.text)
db.set_singup(message.from_user.id, "done")
await bot.send_message(message.from_user.id, "Регистрация успешна!", reply_markup=nav.mainMenu)
else:
await bot.send_message(message.from_user.id, "что?")
# prices
PRICE = types.LabeledPrice(label="Подписка на 1 месяц", amount=500*100) # в копейках (руб)
# buy
@dp.message_handler(commands=['buy'])
async def buy(message: types.Message):
if config.PAYMENTS_TOKEN.split(':')[1] == 'TEST':
await bot.send_message(message.chat.id, "Тестовый платеж!!!")
await bot.send_invoice(message.chat.id,
title="Подписка на бота",
description="Активация подписки на бота на 1 месяц",
provider_token=config.PAYMENTS_TOKEN,
currency="rub",
photo_url="https://www.aroged.com/wp-content/uploads/2022/12/Telegram-Premium-has-collected-a-million-subscribers-in-five-months.png",
photo_width=416,
photo_height=234,
photo_size=416,
is_flexible=False,
prices=[PRICE],
start_parameter="one-month-subscription",
payload="test-invoice-payload")
# pre checkout (must be answered in 10 seconds)
@dp.pre_checkout_query_handler(lambda query: True)
async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery):
await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)
# successful payment
@dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)
async def successful_payment(message: types.Message):
print("SUCCESSFUL PAYMENT:")
payment_info = message.successful_payment.to_python()
for k, v in payment_info.items():
print(f"{k} = {v}")
await bot.send_message(message.chat.id,
f"Платеж на сумму {message.successful_payment.total_amount // 100} {message.successful_payment.currency} прошел успешно!!!"
f"Скачать скрипт:.....(ссылка одноразовая, не пытайтесь ее кому то отпрвить)")
# run long-polling
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=False)
Вывод:From db import Database ImportError: cannot import name 'Database' from 'db' .