Бот в бизнес-аккаунте не получает сообщения через 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?
Ответы (1 шт):
Нашел ответ! Теперь в 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)