Задать вопрос
@zinot

Бот в бизнес-аккаунте не получает сообщения через Dispatcher?

Недавно в телеграмм вышло обновление которое позволяет в свой личный бизнес аккаунт добавить бота ссылка на статью телеграмм. Я настроил бота в @BotFather дал ему необходимые права для того что бы работать с бизнес аккаунтов. И написал простенький код. Если писать лично боту, все работает, однако просто добавить бота в управление чатами не достаточно. Он не может так просто прослушивать сообщения. Документаций толком нет, особенно на aiogram.

Это мой код файла 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.message()
async def handler_message(message: types.Message):
    try:
        await bot.send_message(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)

Если что ошибок никаких не вылазит, до бота просто не доходят сообщения через Dispatcher Я уже начал думать что может мне нужно обязательно делать свой аккаунт юзерботом, но тогда какой смысл вообще от этого обновления? Если тогда я могу все написать через Pyrogram?
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@zinot Автор вопроса
Нашел ответ! Теперь в 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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