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

如何为Telegram机器人的Chat请求按钮设置对应处理器条件?

问题描述

我有两个按钮「Button-1」和「Button-2」,它们分别包含参数不同的KeyboardButtonRequestChat对象。同时存在两个处理器,用于在按钮点击后通过Chat_shared接收频道ID。但我不清楚如何设置条件,让点击「Button-1」时调用第一个处理器,点击「Button-2」时调用第二个处理器?

通常我会通过检查消息文本(如message.text == "Button-1")来设置条件,但在此场景下,点击按钮后不会向聊天框发送文本。

现有代码

按钮代码

@dp.message(lambda message: message.text == "Buttons")
async def configure_source_channels(message: Message, state: FSMContext):
    user_id = message.from_user.id
    user_states[user_id] = UserStates.SOURCE_CHANNELS
    keyboard = ReplyKeyboardMarkup(keyboard=[
        [KeyboardButton(text="button-1", request_chat=KeyboardButtonRequestChat(
            request_id=1,
            user_is_bot=False,
            chat_is_channel=True,
            chat_is_forum=False
        ))],
        [KeyboardButton(text="button-2", request_chat=KeyboardButtonRequestChat(
            request_id=2,
            user_is_bot=True,
            chat_is_channel=False,
            chat_is_forum=False
        ))],
])

处理器代码

@dp.message(F.chat)
async def button1(msg: Message, state: FSMContext):
    chat_info = msg.chat_shared.chat_id

@dp.message(F.chat)
async def button2(msg: Message, state: FSMContext):
    chat_info = msg.chat_shared.chat_id
解决方案

核心思路是利用你已经定义的request_id区分不同按钮的回调:每个KeyboardButtonRequestChat的request_id是唯一标识,当用户选择聊天后,Telegram会将这个ID返回在message.chat_shared对象中,直接过滤这个值就能绑定对应处理器。

修改后的处理器代码如下:

# 绑定Button-1:过滤request_id=1的请求
@dp.message(F.chat_shared.request_id == 1)
async def button1(msg: Message, state: FSMContext):
    chat_info = msg.chat_shared.chat_id
    # 在此添加Button-1对应的业务逻辑

# 绑定Button-2:过滤request_id=2的请求
@dp.message(F.chat_shared.request_id == 2)
async def button2(msg: Message, state: FSMContext):
    chat_info = msg.chat_shared.chat_id
    # 在此添加Button-2对应的业务逻辑

额外注意事项:

  • 确保request_id在整个交互流程中唯一,避免不同按钮使用相同ID导致逻辑混淆
  • 如果结合状态机(FSM)做流程控制,可以同时添加状态过滤,比如@dp.message(F.chat_shared.request_id == 1, state=UserStates.SOURCE_CHANNELS)

内容的提问来源于stack exchange,提问作者XTLSREALITY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:32:16