Есть асинхронный телеграм бот на pyTelegramBotAPI библиотеке, бот отвечает только когда пользователь пишет - например, пользователь пишет "погода" и он сразу же получает прогноз погоды. Я решил добавить авто-проверку погоды, чтобы бот, сам обнаружив низкую температуру, сообщил об этом пользователю. Вроде легко, думал я...
Я пробовал много способов, как это реализовать... Тупо 2 скрипт запустить, но телеграм выдаёт ошибку, что сессия уже используется 1 скриптом; потом сделать функцию (позаимствовал решение
тут), которую пользователь запускал вручную в боте - await weather_check(), но она дублировалась, и переписка превращалась в спам-месиво.
И наконец, я просто запустил эту функцию через asyncio.run всё получилось, думал я - бот автоматически обо всём пишет. Но из-за этого, любые команды или сообщения он игнорит. Что я делаю не так или как реализовать это?
async def weather_check():
while True:
# Тело функции
await asyncio.sleep(5) # Ожидание перед повторной проверкой
asyncio.run(weather_check())
Эта часть зацикливала функцию для варианта, где пользователь сам её вызывает. Почему она изначально по запуску скрипта этого не делала, я не знаю.
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(weather_check())
Простите, если тупой вопрос
За ранее спасибо