gpt4 book ai didi

python-3.x - 如何在 Telethon 中使用 GetRepliesRequest 调用

转载 作者:行者123 更新时间:2023-12-05 05:40:32 25 4
gpt4 key购买 nike

有api方法messages.getReplies在 Telegram API 中,等价物是 functions.messages.GetRepliesRequest在电视节目中。但是此方法不会返回对帖子的预期回复/评论。相反,它返回多条消息,包括对请求的 message_id 的回复和其他消息,这些消息甚至不是对请求的 message_id 的回复。

for conv in client.iter_messages(channel.id):
if conv.reply_to:
# get parent message this message reply to
original_message = conv.get_reply_message()
try:
#iterate all the replies for the parent message
for reply in client.iter_messages(channel.id,
reply_to=original_message.id):
print('\tReply message -> ', reply.to_dict())
except telethon.errors.rpcerrorlist.MsgIdInvalidError:
print('exception ***************')

这里它返回对参数 reply_to 中的输入 message.id 的回复,包括不是对输入 message.id 的回复的消息。

(我检查了方法调用(内部 for 循环)的响应,它们的 reply_to_msg_id 与我要求获得结果的不同)。

我无法理解这些回复在结果中的行为。

此外,Telegram API 文档的示例和解释也不是很好。

  • 什么消息以及如何被视为对 Telegram 中消息的回复
  • telegram 如何判断消息是回复消息还是普通消息?
  • 如果一条消息是回复,那么这是对哪条消息的回复?

最佳答案

给定一个启用了评论的广播 channel (假设该 channel 的用户名是 username),以及一个针对消息 ID 为 1001 的 channel 帖子开始讨论(评论)的帖子,以下代码将打印 channel username 中 post 1001 的所有评论:

async for m in client.iter_messages('username', reply_to=1001):
print(m.text)

这相当于在 Telegram Desktop 中点击“# comment(s)”按钮。不幸的是,我无法重现您在这里提到的内容:

But this method is not returning the expected replies/comments to the post. Instead, it returns multiple messages including the replies to the requested message_id and other messages also which are not even the replies to the requested message_id.

现在,对于其他问题:

What and how messages are considered as reply to the message in the telegram?

让我们换个角度来看问题:send_messagecomment_to

首先,messages.getDiscussionMessage 必须在具有源消息 ID 的源广播 channel 上使用。这将在链接的“discussion megagroup channel”中返回相应的“discussion message”。

现在,messages.sendMessage 可用于在链接的讨论 megagroup channel 中发送消息以回复相应的讨论消息。

如您所见,“评论”只是对讨论组相应消息的“回复”。因此,名称 reply_to,在 iter_messages 期间。

How telegram decides upon the messages whether it is a reply or a normal message?

在给定的聊天中,消息可以回复同一聊天中的其他先前消息(在 Telethon 中,message.reply_to)。但是,对于 channel 评论,它们也以某种方式回复(只是在不同的聊天中),因此是参数名称。我试图坚持 Telegram 的命名约定并通过记录参数来解决混淆,但这可能是错误的选择。

if a message is reply, then to which message this is a reply?

这可以通过 message.reply_to 找到。

关于python-3.x - 如何在 Telethon 中使用 GetRepliesRequest 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72396273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com