Задать вопрос
@cracker_yt

Как обработать исключение в telebot?

Пишу бота автопостинг. Представим такую ситуацию, пользователь добавляет бота в список и при добавлении забыл бота добавить на канал, для подтверждения добавления канала пользователь должен ему написать "Готово", но код после данного сообщения не обрабатывает ничего, а выдаёт ошибку, как это исправить?
Часть кода в котором ошибка(выделена, там где < b > и < / b >):
def check_admin_bot_in_channel(msg):
    global id_list_channel
    if msg.text == 'Готово':
        chat_member = bot.get_chat_member(id_list_channel[-1], 6276048962)

        if chat_member.status == 'administrator':
            kb = StartKB()
            mess = 'Отлично! Теперь вы можете создавать посты на данном канале.'
            bot.send_message(msg.chat.id, mess)
            bot.send_message(msg.chat.id, 'Вы в главном меню!', reply_markup=kb)

        elif chat_member.status == 'member':
            kb = BackMainMenu2()
            mess = 'Бот участник канала, дайте ему права администратора, и нажмите кнопку "Продолжить", ' \
                   'а после напишите "Готово".'
            bot.send_message(msg.chat.id, mess, reply_markup=kb)

        <b>else:
            try:
                kb = BackMainMenu2()
                mess = 'Бот не является участником канала, добавьте его на канал с правами администратора ' \
                       'и нажмите кнопку "Продолжить", а после напишите "Готово".'
                bot.send_message(msg.chat.id, mess, reply_markup=kb)
            except telebot.apihelper.ApiTelegramException:
                print(chat_member)</b>

    else:
        kb = BackMainMenu2()
        mess = 'Я вас не понял. Если вы добавили бота на ваш канал с правами администратора, то ' \
               ' нажмите кнопку "Продолжить", а после напишите "Готово".'
        bot.send_message(msg.chat.id, mess, reply_markup=kb)


И ошибка:

2023-05-11 21:40:03,395 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 403. Description: Forbidden: bot is not a member of the channel chat"
2023-05-11 21:40:03,396 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\__init__.py", line 1074, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\util.py", line 147, in raise_exceptions
    raise self.exception_info
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\util.py", line 90, in run
    task(*args, **kwargs)
  File "C:\Users\feed7\OneDrive\Рабочий стол\Коды Python\Мои коды Python\Автопост бот\main.py", line 129, in check_admin_bot_in_channel
    chat_member = bot.get_chat_member(id_list_channel[-1], 6276048962)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\__init__.py", line 1478, in get_chat_member
    result = apihelper.get_chat_member(self.token, chat_id, user_id)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\apihelper.py", line 385, in get_chat_member
    return _make_request(token, method_url, params=payload)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\apihelper.py", line 162, in _make_request
    json_result = _check_result(method_name, result)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\feed7\AppData\Local\Programs\Python\Python311\Lib\site-packages\telebot\apihelper.py", line 189, in _check_result
    raise ApiTelegramException(method_name, result, result_json)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 403. Description: Forbidden: bot is not a member of the channel chat
"
  • Вопрос задан
  • 660 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну тебе же прямо написало строку, в которой ошибка.
chat_member = bot.get_chat_member(id_list_channel[-1], 6276048962)

И эта строка у тебя НЕ завёрнута в try-except.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы