@gentoolx

Как корректно отправить внешнее сообщение через работающий бот на aiogram?

Добрый день.
Есть работающий бот на aiogram версии 2.23, со своей логикой.
Как правильно через этот бот отправлять сообщения из внешних скриптов (оповещения от других скриптов)?
from bot.bot_init import bot
import asyncio

async def sm(chat_id, text):
    await bot.send_message(chat_id=chat_id, text=text)

asyncio.run(sm('Hello World'))

При попытке отправки через импортированный бот высыпает ошибки
Unclosed client session
client_session:
Unclosed connector
connections: ['[(, 1230003.64)]']
connector:
Fatal error on SSL transport
protocol:
transport: <_ProactorSocketTransport fd=600 read=<_OverlappedFuture cancelled>>
Traceback (most recent call last):
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 684, in _process_write_backlog
self._transport.write(chunk)
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 361, in write
self._loop_writing(data=bytes(data))
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 397, in _loop_writing
self._write_fut = self._loop._proactor.send(self._sock, data)
AttributeError: 'NoneType' object has no attribute 'send'
Exception ignored in:
Traceback (most recent call last):
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 321, in __del__
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 316, in close
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 593, in _start_shutdown
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 598, in _write_appdata
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 706, in _process_write_backlog
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\sslproto.py", line 720, in _fatal_error
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 151, in _force_close
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 745, in call_soon
File "C:\Users\leon\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 510, in _check_closed
RuntimeError: Event loop is closed


Как я понимаю, надо импортировать объект запущенного бота, и уже через него отправлять сообщение.
Второй вариант внутри бота запустить цикл, который читает файл сообщений на отправку, и отправляет их.
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы