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