Не могу подружить aiogram и aioschedule
Задача чтобы бот писал сообщения раз в месяц, но я пытаюсь заставить его для начала отправлять сообщения каждые две секунды.
Код такой:
@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*
Ответы (2 шт):
Проблема может заключаться в том что, aioschedule не обновлялся уже 5 лет, и он не совместим с python 3.10 и более поздними версиями.
Попробуйте установить вот этот форк https://github.com/AleksHeller/python-aioschedule
pip install https://github.com/AleksHeller/python-aioschedule/archive/master.zip
вот решение, проблема заключалась в том, что в новой версии Python поменяли работу async. 2 способа решения внизу https://progr.interplanety.org/ustranenie-oshibki-passing-coroutines-is-forbidden-use-tasks-explicitly-pri-ispolzovanii-aioschedule-v-python-3-11/