Анализ ошибки отправки уведомления в планировщике задач

Функция personal_send_notification предназначена для отправки сообщений пользователям в запланированное время через механизм scheduler. Однако при её выполнении возникает критическая ошибка, несмотря на корректную передачу идентификатора пользователя.

Суть проблемы

Планировщик задач вызывает функцию с правильными аргументами, включая us_id. Отладка подтверждает, что ID пользователя передаётся верно, а сам пользователь не заблокирован в системе. Тем не менее, попытка отправить сообщение завершается исключением RuntimeError: "Не удалось отправить сообщение".

Код функции и контекст

Асинхронная функция реализована следующим образом:

async def personal_send_notification(us_id, msg, datetimeuser):
    print(f"DEBUG: Попытка отправки на ID {us_id}")
    try:
        await bot.send_message(chat_id=us_id, text=f"<b>привет!!!</b>\n\n{msg}", parse_mode=ParseMode.HTML)
    except Exception as e:
        print(f"Критическая ошибка отправки: {e}")

Задача добавляется в планировщик примерно так:

scheduler.add_job(
    personal_send_notification,
    trigger='date',
    run_date=age,
    args=[user_data['us_id'], user_data['msg'], user_data['datetimeuser']]
)

Трассировка ошибки (Traceback)

Исключение возникает на уровне библиотеки maxapi:

Traceback (most recent call last):
  File "bot.py", line 75, in personal_send_notification
    await bot.send_message(chat_id=us_id, text=f"<b>привет!!!</b>\n\n"
  File "maxapi\bot.py", line 266, in send_message
    return await SendMessage(
  File "maxapi\methods\send_message.py", line 141, in fetch
    raise RuntimeError("Не удалось отправить сообщение")
RuntimeError: Не удалось отправить сообщение

Ключевые моменты для диагностики

  • Идентификатор us_id передаётся корректно и соответствует ожидаемому пользователю.
  • Ошибка генерируется не на уровне сетевого запроса или проверки прав, а внутри метода fetch библиотеки maxapi.
  • Сообщение об ошибке является общим и не указывает на конкретную причину сбоя.

Для решения проблемы требуется дополнительная диагностика: проверка состояния бота (bot) в момент выполнения задачи планировщика, валидация формата и содержимого us_id, а также анализ возможных ограничений API Telegram или внутренних ошибок библиотеки maxapi.