Не могу подружить aiogram и aioschedule

Рейтинг: 0Ответов: 1Опубликовано: 04.02.2023

Задача чтобы бот писал сообщения раз в месяц, но я пытаюсь заставить его для начала отправлять сообщения каждые две секунды.

Код такой:

@dp.message_handler()
async def give_counter():
    users = await db.all_users()
    for user in users:
        await bot.send_message(chat_id=int(user),
                               text=f'Я напоминаю, пора подавать показатели счетчиков.',
                               reply_markup=kb.give_count())`


async def scheduler():
aioschedule.every(2).seconds.do(give_counter)
while True:
    await aioschedule.run_pending()

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

Ошибка:

      raise TypeError("Passing coroutines is forbidden, use tasks explicitly.")
TypeError: Passing coroutines is forbidden, use tasks explicitly.
sys:1: RuntimeWarning: coroutine 'Job.run' was never awaited

Ответы

▲ 0

Проблема может заключаться в том что, aioschedule не обновлялся уже 5 лет, и он не совместим с python 3.10 и более поздними версиями.
Попробуйте установить вот этот форк https://github.com/AleksHeller/python-aioschedule

pip install https://github.com/AleksHeller/python-aioschedule/archive/master.zip