You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:27:13