Загрузка...

Why can it be?

Thread in Python created by darkcrow Jun 1, 2025. 199 views

  1. darkcrow
    darkcrow Topic starter Jun 1, 2025 Banned 1095 Apr 30, 2025
    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()
    [IMG]
     
  2. wokeup
    wokeup Jun 1, 2025 Отработка невалидных баз - https://lolz.live/threads/8152283/ 3308 Jun 27, 2024
    чат гпт в посощь
     
    1. View previous comments (1)
    2. Kalipso
      gcc_machine, согласен. раньше люди днями сидели решали проблемы, искали помощи. а щас чат гпт все за минуту подскажет. Хоть это и удобно, но это плохо будет сказываться на скилле кодера
    3. wokeup
      Kalipso, да ну нах этот скилл его все равно скоро заменят
    4. Kalipso
    5. View the next comments (1)
  3. Арбузик
    Проблемы в коде могут быть связаны с несколькими аспектами. Давайте проверим возможные причины:

    Обработка исключений:

    У вас есть 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).
    Убедитесь, что все внешние ресурсы (файлы, данные БД) доступны.

    Если проблема сохраняется, добавьте больше контекста: какие именно ошибки возникают, как ведет себя бот, и какие данные возвращаются из БД.
     
    1. Арбузик
      Арбузик, через deepseek помоги себе просто)
  4. KusuriYakuzen
    KusuriYakuzen Jun 1, 2025 4598 Jun 27, 2020
    хм, похоже на опечатку в слове "verifed", должно быть "verified"
     
  5. виталяфура
    await убери перед keyboard

     
    1. darkcrow Topic starter
    2. виталяфура
      darkcrow, так подожди, у тебя в 99 линии просто в кейборд аргумент не обозначен в скобках
  6. am1rqr
    Покажи ClientKeyboard.menu_keyboard
     
    1. View previous comments (2)
    2. am1rqr
      darkcrow, у тебя тут 2 параметра, а передаешь 1
    3. виталяфура
      darkcrow,
      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()
    4. darkcrow Topic starter
  7. George_a_fish
    ClientKeyboard - класс
    ClientKeyboard.menu_keyboard(lang)) - здесь ты обращаешься к его методу
    Проверь что menu_keyboard это классметод (@classmethod) потому что у тебя код требует чтобы ты сначала создал экземпляр класса а потом уже вызывал метод menu_keyboard а твоем случае этого ты не делаешь,поэтому lang у тебя считывается как self
     
Loading...
Top