Как отправить пользователю tg бота значение переменной из асинхронной функции
Пишу tg бота на базе aiogram. В боте имеется асинхронная функция (task()), которая в цикле постоянно что-то просчитывает и print-ом в консоль выводит результат вычислений (переменную variable). Не соображу, как каждый раз результат вычислений отправлять в чат с ботом пользователю.
from aiogram import Bot, Dispatcher, types, executor
from aiogram.contrib.fsm_storage.memory import MemoryStorage
import asyncio
bot = Bot('BOT_API')
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
@dp.message_handler(commands=['start'])
async def process_command(message: types.Message):
await message.answer('Нажал старт')
async def task():
variable = 0
while True:
variable += 1
print(variable) # Вместо print необходимо отправлять сообщение пользователю
await asyncio.sleep(2)
loop = asyncio.get_event_loop()
loop.create_task(task())
executor.start_polling(dp)
Ответы (1 шт):
Автор решения: Иван Максимович
→ Ссылка
Разобрался.
В функции task()
добавил:
await bot.send_message
получилось:
async def task():
variable = 0
while True:
variable += 1
await bot.send_message(chat_id, f'{variable}')
await asyncio.sleep(2)
Предварительно в chat_id
помещаю номер чата, в который хочу отправить переменную variable
.