如何在Telegram API中转发消息

时间:2017-04-20 14:53:50

标签: api telegram

Telegram API中有两种转发消息的方法:

  • messages.forwardMessage
  • messages.forwardMessages

我想使用forwardMessage方法将消息从channelgroupuser转发到另一个消息。这种方法的定义是:

messages.forwardMessage#33963bf9 peer:InputPeer id:int random_id:long = Updates;

如您所见,此方法有3个输入参数:

  • peer代表我们转发邮件的channelgroupuser。 (目的地)
  • idmessage_id
  • random_id内部使用。

我们知道message_id是聊天中的唯一号码。因此,message_id中的group引用的信息与其他组中的message_id不同。

所以主要的问题是我们如何确定转发的来源peer?因为来源peer不是由message_id确定的。

P.S:我的问题是Telegram API中的方法,而不是Telegram Bot API。

1 个答案:

答案 0 :(得分:1)

ForwardMessageRequest似乎存在一个问题,它没有指定源聊天。显然,message_id不是唯一的,通过我的测试,我发现错误的消息只会通过指定message_id来转发。我注意到message_id并不是唯一的。

但是ForwardMessagesRequest不存在这个问题。以下是如何使用ForwardMessagesRequest版本的示例。

转发示例:

这是我用于测试的代码(我正在使用Telethon for python,但它没关系,因为它直接调用电报API):

source_chat = InputPeerChannel(source_chat_id, source_access_hash)
total_count, messages, senders = client.get_message_history(
                    source_chat, limit=10)

for msg in reversed(messages):
    print ("msg:", msg.id, msg)

msg = messages[0]    
print ("msg id:", msg.id)

dest_chat = InputPeerChat(dest_chat_id)    

result = client.invoke(ForwardMessagesRequest(from_peer=source_chat, id=[msg.id], random_id=[generate_random_long()], to_peer=dest_chat))