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

Pyrogram中通过inline_message_id与query_id获取内联消息信息的技术问题

如何在Pyrogram中获取并编辑内联消息内容

我完全懂你遇到的这个棘手问题:用户点击内联消息的键盘按钮时,CallbackQuery只返回基础回调信息,拿不到完整的消息文本和键盘结构;普通的get_messages方法又因为内联消息没有Chat对象、inline_message_id是字符串类型而无法生效。你尝试用Raw API的GetMessages却用错了输入类型,导致返回MessageEmpty或者空结果,确实挺折腾人的。

问题根源在哪?

你之前用的InputMessageID是给普通聊天消息设计的,根本不适用于内联消息;InputMessageCallbackQuery是通过回调查询ID定位消息,也不是内联消息的正确处理方式。内联消息有专门的输入类型——InputBotInlineMessageID,这才是你需要的关键。

正确解决方案

直接从UpdateInlineBotCallbackQuery的msg_id字段里提取参数,构造InputBotInlineMessageID再传给GetMessages,就能拿到完整的内联消息对象了。

修正后的代码示例:

from pyrogram.raw.functions.messages import GetMessages
from pyrogram.raw.types import InputBotInlineMessageID
from pyrogram.raw.types import Message  # 用于类型校验

async def edit_inline_message(client: Client, update: UpdateInlineBotCallbackQuery, users, chats):
    # update.msg_id本身就是InputBotInlineMessageID类型,直接提取字段即可
    user_id = update.msg_id.user_id
    message_id = update.msg_id.id

    # 构造正确的内联消息输入对象
    inline_input_msg = InputBotInlineMessageID(user_id=user_id, id=message_id)
    
    # 调用Raw API获取消息详情
    message_result = await client.send(GetMessages(id=[inline_input_msg]))
    
    # 提取有效的消息对象并进行编辑
    if message_result.messages and isinstance(message_result.messages[0], Message):
        original_msg = message_result.messages[0]
        print(f"原始消息文本: {original_msg.text}")
        print(f"原始键盘结构: {original_msg.reply_markup}")

        # 基于原始内容修改并编辑消息
        await client.edit_inline_message(
            inline_message_id=update.inline_message_id,
            text=f"已编辑:{original_msg.text}",
            # 可在此处调整键盘结构,比如修改按钮文本或新增按钮
            reply_markup=original_msg.reply_markup
        )

关键细节说明

  1. 无需手动移位计算:你之前尝试的移位操作是多余的,update.msg_id已经直接提供了user_id和id两个字段,直接取用即可。
  2. 编辑消息的正确姿势:拿到原始Message对象后,你可以获取text和reply_markup(内联键盘),修改后调用edit_inline_message,传入update.inline_message_id(字符串类型)就能完成编辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:02:39