@b4r4

Как запускать асинхронную функцию одновременно с поллингом бота телеграмм?

Есть функция которая мониторит бд, также есть бот телеграм. Все находится в одном файле. Не могу найти способ, чтобы одновременно запустить монитор функцию и бота.

Ниже функция монитора:

#validation monitoring
async def validator_monitor():
while True:
print("Проверяю записи...")
validation = await db.verif_checker.find().to_list(None)
for person in validation:
try:
if (person['verification'] == 1 and person['notify'] == 0):
await bot.send_message(person['uid'], 'Вы успешно прошли верификацию!')
db.verif_checker.update_one({"uid": person['uid']}, {"$set": {"notify": 1}})
print(f'Verif sent to {person["uid"]}!')
else:
pass
print(f'Skipping user {person["uid"]} ...')
except Exception as err:
print(err)
await asyncio.sleep(1)

asyncio.run(validator_monitor())

А здесь как я пытался запустить одновременно:

if __name__ == '__main__':
executor.start_polling(dp)
loop = asyncio.get_event_loop()
asyncio.create_task(validator_monitor())

Такой метод привел к работе функции при этом сам бот не отвечал.
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
start_polling() имеет параметр on_startup, который принимает корутину или список корутин.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы