Aiogram сообщение при возникновении события

Serhio163

Новичок
Пользователь
Дек 7, 2021
12
0
1
Самара
Здравствуйте, помогите пожалуйста разобраться с проблемой в работе бота...
При работающем боте параллельно идет процесс обработки данных (независимо от бота), необходимо отправлять сообщения определенным пользователям при возникновении события...
Python:
import asyncio

from aiogram_loader import dp, bot


async def send_message(channel_id: int, text: str):
    await bot.send_message(channel_id, text)

for user in users:
    if blala:
        asyncio.run(send_message(user, 'Уруру'))

Данный код работает, но выдает
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x000001812B30FE90>
Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x000001812B2E2EB0>, 60464.093)]']
connector: <aiohttp.connector.TCPConnector object at 0x00000181799456D0>

бот работает и всё бы ничего, но цикл прерывается
как внедрить в бота независимую отправку сообщения?
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Не гарантирую работоспособность, но попробуй так:

Python:
from asyncio import create_task, gather, run
from aiogram_loader import dp, bot


async def send_message(channel_id: int, text: str):
    await bot.send_message(channel_id, text)


async def gather_task():
    tasks = []
    for user in users:
        if blala:
            tasks.append(create_task(send_message(user, 'Уруру')))
    
    await gather(*tasks)
    
    
run(gather_task())
 
  • Мне нравится
Реакции: Serhio163

Serhio163

Новичок
Пользователь
Дек 7, 2021
12
0
1
Самара
Не гарантирую работоспособность, но попробуй так:

Python:
from asyncio import create_task, gather, run
from aiogram_loader import dp, bot


async def send_message(channel_id: int, text: str):
    await bot.send_message(channel_id, text)


async def gather_task():
    tasks = []
    for user in users:
        if blala:
            tasks.append(create_task(send_message(user, 'Уруру')))
   
    await gather(*tasks)
   
   
run(gather_task())
Спасибо. Работает. Предупреждение выходит всё равно, но это не мешает в общем. Цикл проходит. Вэри мач! )
 

Форум IT Специалистов