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

Как отправить сообщения через работающий бот из внешних скриптов без возникновения ошибки "Unclosed client session"?
  • 8 июня 2024 г. 5:21
Ответы на вопрос 1
Для отправки внешнего сообщения с помощью активного бота через библиотеку aiogram, необходимо импортировать модуль asyncio и создать асинхронную функцию, в которой будет происходить отправка сообщения. 

Пример кода для отправки сообщения через активного бота в библиотеке aiogram:

```python
import asyncio
from aiogram import Bot

async def send_message():
    bot = Bot(token="YOUR_BOT_TOKEN")
    chat_id = "CHAT_ID"
    message = "Hello, world!"
    await bot.send_message(chat_id, message)

loop = asyncio.get_event_loop()
loop.run_until_complete(send_message())
```

Чтобы избежать ошибки "Unclosed client session" при отправке сообщений из внешних скриптов через работающего бота, необходимо создавать новый клиентский сеанс для каждого запроса. 

Пример кода без ошибки "Unclosed client session":

```python
import aiohttp
import asyncio

async def send_message():
    async with aiohttp.ClientSession() as session:
        async with session.post(f"https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage",
                                data={"chat_id": "CHAT_ID", "text": "Hello, world!"}) as response:
            print(await response.text())

loop = asyncio.get_event_loop()
loop.run_until_complete(send_message())
``` 

В обоих примерах необходимо заменить `YOUR_BOT_TOKEN` на токен вашего бота и `CHAT_ID` на id чата, в который вы хотите отправить сообщение.
Похожие вопросы