@router.callback_query(F.data.in_(["back", "check"]), ChatJoinFilter()) async def znak1_output(callback: types.CallbackQuery): try: await callback.message.delete() except: pass user_info = await DataBase.get_user_info(callback.from_user.id) lang = await DataBase.get_lang(callback.from_user.id) if lang == "ru": photo = types.FSInputFile("hello.jpg") else: photo = types.FSInputFile("hel.jpg") if user_info[0] != "verifed": await callback.message.answer_photo(photo, caption=languages[lang]["znakomstvo1"], parse_mode="HTML", reply_markup=await ClientKeyboard.znak1_keyboard(lang)) else: await callback.message.answer_photo(photo, caption=languages[lang]["welcome_message"], parse_mode="HTML", reply_markup=await ClientKeyboard.menu_keyboard(lang)) await callback.answer() Python @router.callback_query(F.data.in_(["back", "check"]), ChatJoinFilter()) async def znak1_output(callback: types.CallbackQuery): try: await callback.message.delete() except: pass user_info = await DataBase.get_user_info(callback.from_user.id) lang = await DataBase.get_lang(callback.from_user.id) if lang == "ru": photo = types.FSInputFile("hello.jpg") else: photo = types.FSInputFile("hel.jpg") if user_info[0] != "verifed": await callback.message.answer_photo(photo, caption=languages[lang]["znakomstvo1"], parse_mode="HTML", reply_markup=await ClientKeyboard.znak1_keyboard(lang)) else: await callback.message.answer_photo(photo, caption=languages[lang]["welcome_message"], parse_mode="HTML", reply_markup=await ClientKeyboard.menu_keyboard(lang)) await callback.answer()
Проблемы в коде могут быть связаны с несколькими аспектами. Давайте проверим возможные причины: Обработка исключений: У вас есть try/except для удаления сообщения, но исключение перехватывается без логирования. Добавьте логирование: python Copy Download except Exception as e: logging.error(f"Failed to delete message: {e}") Проверка данных из БД: Убедитесь, что DataBase.get_user_info() и DataBase.get_lang() возвращают ожидаемые значения. Проверьте, что user_info[0] действительно содержит статус верификации. Пути к файлам: Убедитесь, что файлы "hello.jpg" и "hel.jpg" существуют в корневой директории проекта. Проверка languages[lang]: Убедитесь, что словарь languages содержит ключи для всех возможных языков. Проверьте, что ключи "znakomstvo1" и "welcome_message" существуют для каждого языка. Клавиатуры: Проверьте, что методы ClientKeyboard.znak1_keyboard() и ClientKeyboard.menu_keyboard() возвращают валидные клавиатуры. Фильтр ChatJoinFilter(): Убедитесь, что фильтр работает корректно и не блокирует нужные запросы. Обработка callback: В конце есть await callback.answer(), но лучше указать параметры: python Copy Download await callback.answer() # или например await callback.answer(text="Done") Рекомендации по улучшению: Добавьте логирование для отладки. Проверьте все возможные пути выполнения (особенно условия if/else). Убедитесь, что все внешние ресурсы (файлы, данные БД) доступны. Если проблема сохраняется, добавьте больше контекста: какие именно ошибки возникают, как ведет себя бот, и какие данные возвращаются из БД.
darkcrow, @router.callback_query(F.data.in_(["back", "check"]), ChatJoinFilter()) async def znak1_output(callback: types.CallbackQuery): try: await callback.message.delete() except: pass user_info = await DataBase.get_user_info(callback.from_user.id) lang = await DataBase.get_lang(callback.from_user.id) if lang == "ru": photo = types.FSInputFile("hello.jpg") else: photo = types.FSInputFile("hel.jpg") if user_info[0] != "verifed": await callback.message.answer_photo( photo, caption=languages[lang]["znakomstvo1"], parse_mode="HTML", reply_markup=await ClientKeyboard.znak1_keyboard(lang) ) else: await callback.message.answer_photo( photo, caption=languages[lang]["welcome_message"], parse_mode="HTML", reply_markup=await ClientKeyboard.menu_keyboard(user_info, lang) ) await callback.answer() Python @router.callback_query(F.data.in_(["back", "check"]), ChatJoinFilter()) async def znak1_output(callback: types.CallbackQuery): try: await callback.message.delete() except: pass user_info = await DataBase.get_user_info(callback.from_user.id) lang = await DataBase.get_lang(callback.from_user.id) if lang == "ru": photo = types.FSInputFile("hello.jpg") else: photo = types.FSInputFile("hel.jpg") if user_info[0] != "verifed": await callback.message.answer_photo( photo, caption=languages[lang]["znakomstvo1"], parse_mode="HTML", reply_markup=await ClientKeyboard.znak1_keyboard(lang) ) else: await callback.message.answer_photo( photo, caption=languages[lang]["welcome_message"], parse_mode="HTML", reply_markup=await ClientKeyboard.menu_keyboard(user_info, lang) ) await callback.answer()
ClientKeyboard - класс ClientKeyboard.menu_keyboard(lang)) - здесь ты обращаешься к его методу Проверь что menu_keyboard это классметод (@classmethod) потому что у тебя код требует чтобы ты сначала создал экземпляр класса а потом уже вызывал метод menu_keyboard а твоем случае этого ты не делаешь,поэтому lang у тебя считывается как self