@vasq1337

Выдаёт ошибку в коде. Как исправить?

664ea60897ebf808684365.png
import asyncio

from aiogram import Bot, F, Dispatcher
from aiogram.filters import Command
from aiogram.types import Message, CallbackQuery, FSInputFile
from database import database
from keyboard import online, inline
from aiogram.methods import SendPhoto

token = ""

bot = Bot(token)
dp = Dispatcher()
db = database("users.db")



@dp.message(Command("start"))
async def start_message(message: Message):
    user = db.get_user_cursor(message.from_user.id)
    
    if user is None:
        db.new_user(message.from_user.id)
        await message.answer(
            " Добро пожаловать в Анонимный Чат Бот!\n"
            " Наш бот предоставляет возможность анонимного общения.\n\n"
            f"‍ Людей в поиске: {db.get_users_in_search()}",
            reply_markup = online.builder(" Найти чат")
        )
    else:
        await message.answer(
            " Добро пожаловать в Анонимный Чат Бот!\n\n"
            "Вы уже зарегистрированы!\n\n"
            f"‍ Людей в поиске: {db.get_users_in_search()}",
            reply_markup = online.builder(" Найти чат")
        )

@dp.message(F.text == " Найти чат")
async def search_chat(message: Message):
    user = db.get_user_cursor(message.from_user.id)

    if user is not None:
        rival = db.search(message.from_user.id)

        if rival is None:
            await message.answer(
                " Вы начали поиск игрока...\n"
                f"‍ Людей в поиске: {db.get_users_in_search()}",
                reply_markup = online.builder("❌ Завершить поиск игрока")
            )
        else:
            db.start_chat(message.from_user.id, rival["id"])

            string = "✅ Игрок найден!\n"
            string += "Чтобы завершить диалог, нажмите \"❌ Завершить диалог\""

            await message.answer(string, reply_markup = online.builder("❌ Завершить диалог"))
            await bot.send_message(rival["id"], string, reply_markup = online.builder("❌ Завершить диалог"))

@dp.message(F.text == "❌ Завершить поиск игрока")
async def stop_search(message: Message):
    user = db.get_user_cursor(message.from_user.id)

    if user is not None:
        if user["status"] == 1:
            db.stop_search(message.from_user.id)

            await message.answer(
                "✅ Вы закончили поиск игрока",
                reply_markup = online.builder(" Найти чат")
            )

@dp.message(F.text == "❌ Завершить диалог")
async def stop_chat(message: Message):
    user = db.get_user_cursor(message.from_user.id)

    if user is not None:
        if user["status"] == 2:
            db.stop_chat(message.from_user.id, user["rid"])

            await message.answer(
                "✅ Вы завершили диалог с собеседником.\n\n"
                "Для того, чтобы найти чат, нажмите \" Найти чат\"",
                reply_markup = online.builder(" Найти чат")
            )

            await bot.send_message(user["rid"],
                "❌ С вами завершили диалог.\n\n"
                "Для того, чтобы найти чат, нажмите \" Найти чат\"",
                reply_markup = online.builder(" Найти чат")
            )

@dp.message()
async def handler_message(message: Message):
    user = db.get_user_cursor(message.from_user.id)

    if user is not None:
        if user["status"] == 2:
            # await bot.send_message(1371198599, str(message))
            if message.photo is not None:
                await bot.send_photo(chat_id=user["rid"], photo=message.photo[-1].file_id, 
                                     caption = message.caption)
            elif message.text is not None:
                await bot.send_message(user["rid"], message.text)
            elif message.voice is not None:
                await bot.send_audio(chat_id=user["rid"], audio=message.voice.file_id, 
                                        caption = message.caption)
            elif message.video_note is not None:
                await bot.send_video_note(chat_id=user["rid"], video_note=message.video_note.file_id)
            elif message.sticker is not None:
                await bot.send_sticker(chat_id=user["rid"], sticker = message.sticker.file_id)
                


async def main():
    await dp.start_polling(bot)


if __name__ == "__main__":
    asyncio.run(main())
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Какая версия aiogram установлена? Точно та же, для которой написан код?
Потому что есть подозрение, что не та.
Ответ написан
Комментировать
@RaiTer228
Вы используете старую версию aiogram(2.0)

Попробуйте

from aiogram.dispatcher.filters import Command
from aiogram.dispatcher.methods import SendPhoto

Просто добавьте "dispatcher" между aiogram и модулями
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы