在aiogram中开发Telegram Business机器人获取Business Connection ID的问题
Telegram Business机器人连接校验问题(aiogram开发)
我在使用aiogram开发Telegram Business机器人时,无法实现连接校验功能。此前见过同类机器人的机制:引导用户将机器人添加为聊天机器人,消息附带内联按钮,点击按钮即可校验连接状态——若机器人已添加且拥有权限则提示成功,否则提示错误。我尝试复刻该机制,但不清楚如何通过这种方式获取Business Connection ID。目前找到的唯一方法是通过dp.business_message()处理器获取,但该方式需要用户发送私信才能触发。
我的现有代码如下:
@dp.business_message() async def handler_message(message: types.Message): print(message.business_connection_id) def verify_keyboard(): return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton( text="✅ Проверить подключение", callback_data="/verify" )] ] ) @dp.message(Command("start")) async def cmd_start(message: types.Message): text = ( "🔌 Подключите бота к вашему бизнес-аккаунту:\n\n" "1. В Telegram Business откройте <i>Настройки → Боты</i>\n" "2. Добавьте этого бота\n" "3. Нажмите кнопку ниже" ) await message.answer(text, reply_markup=verify_keyboard()) @dp.callback_query(lambda c: c.data == "/verify") async def verify_callback(callback: types.CallbackQuery): try: if callback.message.business_connection_id: business_id = callback.message.business_connection_id await callback.answer() await callback.message.edit_text( f"🟢 Подключение активно!\nID: <code>{business_id}</code>", reply_markup=verify_keyboard() ) else: await callback.answer() await callback.message.edit_text( "🔴 Бот не подключен к бизнес-аккаунту!", reply_markup=verify_keyboard() ) except Exception as e: await callback.answer(f"Error: {str(e)}", show_alert=True)
更新:我找到了一个连接处理器并做了临时处理,该方案似乎可行,但仅在创建连接时生效——即重启机器人后需要重新创建连接。当然可以用数据库或文件存储ID,但或许有更优的解决方案:
@dp.business_connection() async def handler_connection(con: BusinessConnection): global connection_id connection_id = con.id
内容的提问来源于stack exchange,提问作者SenArio
相关产品推荐
相关产品推荐

