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

Как обработать команду в телеграмм боте при работающем расписании на aioschedule?

Пишу парсер с выводом информации в телеграмм боте. Парс должен производиться каждые 20 минут. Для создания расписания использую aioschedule. Расписание работает корректно, но бот не реагирует на команды, то есть не срабатывает обработчик. Как сделать так, чтобы расписание было активно и бот обрабатывал команды?

Код с расписанием:
async def scheduler():
    aioschedule.every(20).minutes.do(analysis)

    while True:
        await aioschedule.run_pending()
        await asyncio.sleep(1)

async def on_startup(_):
    await asyncio.create_task(scheduler())

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True, on_startup=on_startup)


Команда обрабатывается обычным хендлером:
@dp.message_handler(commands=['new'])
async def new(message: types.Message):
    await bot.send_message(message.chat.id, 'Текст сообщения')
  • Вопрос задан
  • 257 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
await asyncio.create_task(scheduler())
Ты ждешь, пока scheduler() не закончит работу. Зачем? Вызов create_task() сам по себе планирует выполнение переданной корутины, её не имеет смысла awaitить - разве что только в плане "дождаться конца задачи".
Оставь просто вызов create_task(), без await, ну или сохрани возвращаемое create_task() значение в переменную (если нужно будет потом прервать выполнение scheduler()).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽