0

我正在尝试获取有关我的机器人发送的内联消息的信息,以便对其进行编辑。该消息附加了一个内联键盘,按下一个按钮,该消息应该被编辑。编辑应基于消息及其键盘中包含的信息。

问题:当用户从该嵌入式键盘按下按钮时,我的机器人只接收有关该信息的信息callback_query,而不是有关整个键盘或消息中写入的文本的信息。现在,由于我的编辑应该使用该信息,我正在尝试使用一些方法调用来检索它们,例如get_messages,但这似乎不起作用,因为内联消息没有Chat对象并且它们inline_message_id甚至不是数字。

因此,我查看了来自 Pyrogram 和 Telegram 本身的文档,我发现有一个原始方法GetMessages将 的列表作为输入,而is的InputMessage一个构造函数对于我的情况来说似乎是正确的,因为它不需要一个。所以我尝试使用from构建一个(因为非原始更新由于某种原因具有不同的类型(str 而不是 int))。这里的问题是返回一个对象。InputMessageInputMessageIDchat_idInputMessageIDinline_message_idRawUpdateCallbackQueryGetMessagesMessageEmpty

这是代码:

async def edit_inline_message(client: Client, update: UpdateInlineBotCallbackQuery, users, chats):
    # according to https://core.telegram.org/constructor/inputBotInlineMessageID
    # inputBotInlineMessageID.id has this format
    user_id, message_id = update.msg_id.id >> 32, update.msg_id.id & 0xFFFFFFFF
    print(
        await client.send(
            GetMessages(
                id = [InputMessageID(id = message_id)]
            )
        )
    )

结果:

{
    "_": "types.messages.Messages",
    "messages": [
        {
            "_": "types.MessageEmpty",
            "id": 1473846
        }
    ],
    "chats": [],
    "users": []
}

我也尝试过使用InputMessageCallbackQueryInputMessageID但结果更糟:

{
    "_": "types.messages.Messages",
    "messages": [],
    "chats": [],
    "users": []
}
4

0 回答 0