Как запустить задачу из бота 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('Сообщение обработано, задача работает в фоне.')

→ Ссылка