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

Почему for-in крашит бот?

Есть вот такая часть кода:
for operators in operators_id:
        joinDialogOperBtn = types.InlineKeyboardMarkup()
        joinDialogOperBtn.add(join_dialog_btn)
        bot.send_message(operators, f"Поступило новое сообщение в службу поддержки.\n\nUser ID: {message.from_user.id}\nUsername: @{message.from_user.username}\n\nВопрос клиента:\n<b>{message.text}</b>", parse_mode="HTML", reply_markup=joinDialogOperBtn)


Проблема в том, что если я запускаю функцию, в которой есть эта часть кода - функция выполняется правильно, рассылает операторам текст, ник, айди, добавляет кнопку, НО крашит бот с ошибкой chat not found. Если эту часть кода вырезаю - краша не происходит. Кто подскажет, почему так может быть? Лог ошибки прикрепляю в спойлер:

spoiler
2023-07-08 20:49:27,766 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: chat not found"
2023-07-08 20:49:27,766 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\__init__.py", line 1074, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\util.py", line 147, in raise_exceptions
    raise self.exception_info
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\util.py", line 90, in run
    task(*args, **kwargs)
  File "путь\к\коду\", line 838, in <lambda>
    bot.register_next_step_handler(message, lambda msg: supportWait(bot, msg, user_help_id, operators_id))
                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "путь\к\коду\", line 857, in supportWait
    bot.send_message(operators, f"Поступило новое сообщение в службу поддержки.\n\nUser ID: {message.from_user.id}\nUsername: @{message.from_user.username}\n\nВопрос клиента:\n<b>{message.text}</b>", parse_mode="HTML", reply_markup=joinDialogOperBtn)
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\__init__.py", line 1549, in send_message
    apihelper.send_message(
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\apihelper.py", line 264, in send_message
    return _make_request(token, method_url, params=payload, method='post')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "путь\к\файлу\Python\Python311\Lib\site-packages\telebot\apihelper.py", line 162, in _make_request
    json_result = _check_result(method_name, result)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "путь\к\файлу\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: 400. Description: Bad Request: chat not found
  • Вопрос задан
  • 28 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@xx_RuBiCoN_xx Автор вопроса
Изза того, что в списке операторов были значения none в свободных слотах операторов.
Исправил вот так:
operators_id = [operator1, operator2, operator3, operator4, operator5]
operators_id = [operator for operator in operators_id if operator is not None]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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