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

    Функция 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.