бывает такое, что иногда при проверке подписки на канал бот всем, независимо от того подписан человек или нет возвращает left случается это редко (но иногда может 2 раза за день) и длиться пару часов, что это может быть?
Gosha_coder, @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 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
Nekro3, статус подписки юзера left, ну типо то что он вышел (ну на самом деле это не так, юзер подписан на канал)
h3artkrush, как появится ошибка, попробуй такой же запрос к другому каналу сделать и посмотреть ответ, если left - бот проклят и меняй его
оно еще ломается редко и вот как то думаю может все-таки лимиты, потому-что юзеров в боте достаточно много