Добрый день.
Есть работающий бот на 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
Как я понимаю, надо импортировать объект запущенного бота, и уже через него отправлять сообщение.
Второй вариант внутри бота запустить цикл, который читает файл сообщений на отправку, и отправляет их.