Как запустить задачу из бота aiogram python?
Смысл в том, что он будет работать при выполнении других задач.
import asyncio
from datetime import datetime
from aiogram import Bot, Dispatcher, executor, types
API_TOKEN = ''
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(content_types=['text'])
async def text(message: types.Message):
if message.text == 'a':
print(await periodic())
if message.text == 'b':
print('da')
async def periodic():
for i in range(99999):
pass
return await 12
if __name__ == '__main__':
executor.start_polling(dp)
Когда бот пишет а, он запускает скрипт, но когда он сразу же пишет б, он не отвечает. Смысл вопроса состоит в том, чтобы понять, как запустить асинхронный поток из потока.
Ответы (1 шт):
Автор решения: Oleg
→ Ссылка
Ответ на ваш вопрос есть в документации.
Для запуска отдельных задач используйте asyncio.create_task()
import asyncio
async def say_after(delay, message):
await asyncio.sleep(delay)
await message.reply('В')
@dp.message_handler()
async def text_handler(message: Message):
if message.text== 'А':
await message.reply('Б')
elif message.text== 'Б':
asyncio.create_task(say_after(10, message))
print('Сообщение обработано, задача работает в фоне.')