Загрузка...

Проблемы с getChatMember aiogram3

Тема в разделе Python создана пользователем h3artkrush 22 янв 2025. 188 просмотров

  1. h3artkrush
    h3artkrush Автор темы 22 янв 2025 вип клиент в любом заведении
    бывает такое, что иногда при проверке подписки на канал бот всем, независимо от того подписан человек или нет возвращает left

    случается это редко (но иногда может 2 раза за день) и длиться пару часов, что это может быть?
     
    1. Gosha_coder
      h3artkrush, и вообще код в студию предоставь
    2. h3artkrush Автор темы
      Gosha_coder,
      Python
      @router.callback_query(F.data == "checks_subscribe")
      async def check_subscribe_callback(callback: CallbackQuery, bot: Bot, session: AsyncSession, config: Config):
      SPONSOR_CHECK_MESSAGE = '''
      <b>Уважаемый пользователь</b>, к сожалению, вы не подписаны на спонсоров

      <i>Подпишитесь на каналы спонсоров и нажмите кнопку
      «✅ Проверить подписку»</i>
      '''

      user_id = callback.from_user.id
      user_data = await db.get_user(session, user_id)
      ref_id = user_data.refferal_id if user_data else None
      if ref_id:
      ref_data = await db.get_user(session, ref_id)
      ref_username = ref_data.username if ref_data else None
      else:
      ref_username = "Без реферера"

      public_channels = [
      channel for channel in await db.get_all_channels(session)
      if channel.channel_status == 'Публичный'
      ]

      # Проверяем подписку на каждый публичный канал
      for channel in public_channels:
      try:
      member = await bot.get_chat_member(
      chat_id=channel.channel_id,
      user_id=user_id
      )
      if member.status not in ["member", "administrator", "creator"]:
      await bot.delete_message(callback.message.chat.id, callback.message.message_id)
      photo = FSInputFile('bot/assets/images/sponsors.jpg')
      await callback.message.answer_photo(
      photo=photo,
      caption=SPONSOR_CHECK_MESSAGE,
      reply_markup=await kb.get_channels_keyboard(await db.get_all_channels(session))
      )
      await callback.answer()
      return

      except Exception as e:
      logger.error(f"Ошибка при проверке подписки на канал {channel.channel_id}: {e}")
      await callback.message.answer(
      "Произошла ошибка при проверке подписки. Пожалуйста, попробуйте позже."
      )
      await callback.answer()
      return
      22 янв 2025 Изменено
  2. Nekro3
    Nekro3 22 янв 2025 Закажи разработку тут - lolz.live/threads/7578402/
    подробнее,
    ты про ChatMemberLeft?
     
    1. h3artkrush Автор темы
      Nekro3, статус подписки юзера left, ну типо то что он вышел (ну на самом деле это не так, юзер подписан на канал)
      22 янв 2025 Изменено
    2. Nekro3
      h3artkrush, как появится ошибка, попробуй такой же запрос к другому каналу сделать и посмотреть ответ, если left - бот проклят и меняй его
    3. Посмотреть следующие комментарии (3)
  3. h3artkrush
    h3artkrush Автор темы 22 янв 2025 вип клиент в любом заведении
    оно еще ломается редко и вот как то думаю может все-таки лимиты, потому-что юзеров в боте достаточно много
     
    1. рандомли
      h3artkrush, может апишка телеги подвисает
    2. h3artkrush Автор темы
      рандомли, ну я ща ****** поставил вроде норм работает, пройдет время посмотрим :interesting:
Top
Загрузка...