Почему бот в корпоративном аккаунте не получает уведомления через Dispatcher?

Как настроить бота в телеграмме для работы с бизнес аккаунтами через aiogram? Мой код для обработки сообщений в боте работает при написании ему лично, но не обрабатывает сообщения, если его просто добавить в управление чатами. Подскажите, как добавить функциональность для прослушивания сообщений через Dispatcher в aiogram.
  • 29 апреля 2024 г. 11:40
Ответы на вопрос 2
1. Возможно, проблема заключается в том, что бот не является администратором в корпоративном аккаунте, и поэтому не получает уведомлений через Dispatcher. Убедитесь, что бот добавлен в список администраторов и имеет все необходимые разрешения для получения уведомлений.

2. Для настройки бота в телеграмме для работы с бизнес аккаунтами через aiogram, вам необходимо добавить обработчик Update типа Message для прослушивания сообщений через Dispatcher. Ниже приведен пример кода для добавления обработчика сообщений:

```python
from aiogram import Bot, Dispatcher, types
from aiogram.dispatcher import FSMContext
from aiogram.types import Message
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.utils import executor

bot = Bot(token='YOUR_BOT_TOKEN')
dispatcher = Dispatcher(bot)

@dispatcher.message_handler()
async def handle_messages(message: Message, state: FSMContext):
    await message.answer("Привет! Я получил ваше сообщение: " + message.text)

if __name__ == '__main__':
    executor.start_polling(dispatcher, skip_updates=True)
```

С данным кодом бот будет отвечать на любые сообщения, которые ему отправят в чатах, в которых он находится. Вам также может понадобиться настроить работу с состояниями и использовать FSM (Finite State Machine) для более сложной логики обработки сообщений.

Надеюсь, это поможет вам настроить бота для работы с бизнес аккаунтами через aiogram. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться к документации aiogram или задавать вопросы здесь.
Нашел ответ! Теперь в aiogram для Dispather есть такой параметр как business_message. Просто ставите его вместо обычного dp.message и все! Так же при помощи message.business_connetion_id узнаете ID своего соединения и после можете использовать его для ответа на сообщения! Пример кода (только файла handler) 

from aiogram import types
from settings import dp, bot
from messages import list_mes
from logs import init_logger
import random

logger = init_logger(__name__)

@dp.business_message()
async def handler_message(message: types.Message):
    print(message.business_connection_id)
    try:
        await bot.send_message(business_connection_id=message.business_connection_id,
                               chat_id=message.from_user.id, text=random.choice(list_mes))
    except Exception as e:
        logger.error(f'Не удалось ответить на сообщение в ЛС\n Ошибка - {e}')


async def main() -> None:
    await dp.start_polling(bot)
Похожие вопросы