Почему возникает ошибка авторизации шедулера телеграм бота?
Написала телеграмм бота (python, aiogram3,sqlite3 ), не коммерческий проект, учусь. Идея такая: доставать данные с сайта по апи+ проверять обновления на сайте, если они есть, отправлять сообщение пользователям в бд. Локально все нормально работало. Выложила а сервер (beget). Бот работает, данные по запросу предоставляются, подписаться на обновления/отписаться - работает, но информации по обновлениям нет. Смотрю по файлу nohup:
ERROR:aiogram.dispatcher:Failed to fetch updates - TelegramConflictError: Telegram server says - Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
WARNING:aiogram.dispatcher:Sleep for 4.902753 seconds and try again... (tryings = 9, bot id = )
ERROR:aiogram.dispatcher:Failed to fetch updates - TelegramUnauthorizedError: Telegram server says - Unauthorized
WARNING:aiogram.dispatcher:Sleep for 5.065652 seconds and try again... (tryings = 33631, bot id = )
Но почему? я поменяла токен бота , никакого другого инстанса быть не может.
Вот код, который запускает шедулер и main:
async def start():
#включение шедулера
scheduler = AsyncIOScheduler(timezone="Europe/Moscow")
scheduler.add_job(get_and_send_updates, 'cron', hour=18, minute=30, start_date=datetime.now(), args=(bot,))
scheduler.add_job(get_and_send_updates, 'cron', hour=19, minute=30, start_date=datetime.now(), args=(bot,))
scheduler.add_job(get_and_send_updates, 'cron', hour=20, minute=30, start_date=datetime.now(), args=(bot,))
scheduler.add_job(get_and_send_updates, 'cron', hour=22, minute=25, start_date=datetime.now(), args=(bot,))
scheduler.add_job(get_and_send_updates, 'cron', hour=23, minute=1, start_date=datetime.now(), args=(bot,))
scheduler.start()
# создание бд
create_users_db()
create_dates_db()
try:
await dp.start_polling(bot, skipUpdates=False)
finally:
await bot.session.close()
Вы вставляете маленький кусочек кода из которого не видно полной картины. Сдается мне вот здесь:
get_and_send_updates как раз создается еще один instance бота. Либо, при создании задачи создается отдельный процесс и тогда каждый add_job запускает НОВЫЙ процесс. Попробуйте добавить только один джоб.
Я бы Вам порекомендовал написать СВОЙ инструмент, если Вы уж учитесь. А то получается, что Вы хотите научиться собирать компьютеры, но покупаете готовый и вставляете туда только одну свою деталь. Получается понабрали кучу библиотек, но как они работают не разобрались.
Илья М, не очень понимаю, что Вы имеете ввиду? Я сама написала, что шедулер должен отрабатывать несколько раз, отдельно функция get_and_send_updates нормально отрабатывает. Как я выше писала, если запустить бота локально на компе,то все работает, но на сервере возникают проблемы.