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

Telebot框架:点击内联按钮时能否弹出聊天选择模态窗口用于转发消息?

Telebot框架实现内联按钮触发聊天/用户选择模态窗口的说明
  • Telebot本身没有直接内置弹出聊天选择模态窗口的现成功能,但可以借助Telegram Bot API 6.0+新增的request_user或request_chat参数,实现点击内联按钮后触发用户选择弹窗的效果,进而完成消息转发。

  • 核心实现步骤:

    1. 发送带内联按钮的初始消息,按钮绑定回调标识;
    2. 监听按钮回调,触发带用户/聊天选择请求的消息,此时Telegram会弹出模态窗口让用户选择目标;
    3. 监听用户选择后的消息,提取目标用户/聊天ID,执行消息转发逻辑。
  • 代码示例(基于pyTelegramBotAPI):

    import telebot
    from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
    
    bot = telebot.TeleBot("你的机器人Token")
    
    # 发送带内联按钮的欢迎消息
    @bot.message_handler(commands=['start'])
    def start_handler(message):
        btn_markup = InlineKeyboardMarkup()
        btn_markup.add(InlineKeyboardButton("选择用户转发", callback_data="pick_user"))
        bot.send_message(message.chat.id, "点击下方按钮选择转发目标", reply_markup=btn_markup)
    
    # 处理内联按钮回调
    @bot.callback_query_handler(func=lambda call: call.data == 'pick_user')
    def pick_user_callback(call):
        # 触发用户选择模态窗口
        bot.send_message(
            call.message.chat.id,
            "请选择要转发的用户:",
            request_user=telebot.types.RequestUser(
                request_id=1,
                user_is_bot=False  # 限制仅选择非机器人用户
            )
        )
    
    # 处理用户选择结果,执行转发
    @bot.message_handler(func=lambda msg: msg.user_shared is not None)
    def handle_user_selection(msg):
        target_user_id = msg.user_shared.user_id
        # 示例:转发当前对话中最新的一条消息到目标用户,可按需调整转发逻辑
        bot.forward_message(target_user_id, msg.chat.id, msg.message_id - 1)
        bot.send_message(msg.chat.id, f"消息已转发到用户ID:{target_user_id}")
    
    bot.polling()
    
  • 关键注意点:

    • 必须使用支持Telegram Bot API 6.0+的pyTelegramBotAPI版本,否则request_user/request_chat参数无法生效;
    • 用户选择后,Telegram会发送包含user_shared(选择用户)或chat_shared(选择聊天)字段的消息,需监听这类消息获取目标ID;
    • 若需要选择群组/频道,将request_user替换为request_chat即可,参数配置逻辑类似。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:33:12