Почему у меня возникает ошибка при использовании тг бота на aiogram?

Как исправить ошибку "TelegramBadRequest: Telegram server says - Bad Request: user not found" в коде для проверки подписки на канал? Не могу понять, что именно вызывает эту ошибку в следующем коде:

```python
async def catching(call: CallbackQuery, bot: Bot):
    if call.data == "check_subscribe":
        user_channel_status = await bot.get_chat_member('@wbexprt', call.from_user.id)
        if user_channel_status["status"] != 'left':
            print("1")
        else:
            print("2")
```
Заранее спасибо за помощь!
  • 7 января 2024 г. 21:17
Ответы на вопрос 2
Ошибка "TelegramBadRequest: Telegram server says - Bad Request: user not found" указывает на то, что Telegram API не может найти пользователя с указанным ID в указанном чате (канале). Это может произойти по нескольким причинам:

1. Пользователь с ID, которое вы передаете, не существует. Убедитесь, что `call.from_user.id` действительно соответствует существующему пользователю Telegram.

2. Пользователь не является членом канала. Для того чтобы получить информацию о пользователе в канале, пользователь должен быть его членом.

3. Бот не является администратором канала. Для того чтобы бот мог получать информацию о пользователях в канале, он должен быть добавлен в канал в качестве администратора с соответствующими правами на получение информации о членах канала.

4. Вы используете неправильную ссылку на канал или неправильно указали его в коде. Убедитесь, что `@wbexprt` — это корректное имя канала, а бот является его администратором.

Для решения проблемы рекомендую выполнить следующие шаги:

- Проверьте, что бот добавлен в канал в качестве администратора с необходимыми правами.
- Проверьте, что `@wbexprt` — это действительное и точное имя канала.
- Удостоверьтесь, что пользователь вызывающий команду бота действительно есть в списке участников канала и что он не покинул его (состояние `left`).

Также имейте в виду, что пользователь может ограничивать свою видимость в настройках приватности, что может привести к невозможности получения информации о нем ботом.

И последнее: не забывайте обрабатывать возможные исключения в вашем коде для избежания нежелательных сбоев.

```python
from aiogram.utils.exceptions import BadRequest

async def catching(call: CallbackQuery, bot: Bot):
    try:
        user_channel_status = await bot.get_chat_member('@wbexprt', call.from_user.id)
        if user_channel_status["status"] != 'left':
            print("1")
        else:
            print("2")
    except BadRequest as e:
        print("Ошибка:", e)
```

Таким образом, если произойдет ошибка `BadRequest`, вы увидите ее в выводе консоли и сможете соответственно реагировать.
сделай обработку ошибки с помощью try/except
Похожие вопросы