我正在尝试获取有关我的机器人发送的内联消息的信息,以便对其进行编辑。该消息附加了一个内联键盘,按下一个按钮,该消息应该被编辑。编辑应基于消息及其键盘中包含的信息。
问题:当用户从该嵌入式键盘按下按钮时,我的机器人只接收有关该信息的信息callback_query
,而不是有关整个键盘或消息中写入的文本的信息。现在,由于我的编辑应该使用该信息,我正在尝试使用一些方法调用来检索它们,例如get_messages
,但这似乎不起作用,因为内联消息没有Chat
对象并且它们inline_message_id
甚至不是数字。
因此,我查看了来自 Pyrogram 和 Telegram 本身的文档,我发现有一个原始方法GetMessages
将 的列表作为输入,而is的InputMessage
一个构造函数对于我的情况来说似乎是正确的,因为它不需要一个。所以我尝试使用from构建一个(因为非原始更新由于某种原因具有不同的类型(str 而不是 int))。这里的问题是返回一个对象。InputMessage
InputMessageID
chat_id
InputMessageID
inline_message_id
RawUpdate
CallbackQuery
GetMessages
MessageEmpty
这是代码:
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": []
}
我也尝试过使用InputMessageCallbackQuery
,InputMessageID
但结果更糟:
{
"_": "types.messages.Messages",
"messages": [],
"chats": [],
"users": []
}