2017-04-20 213 views
2

有兩種方法在電報的API,轉發消息:如何電報API轉發消息

  • messages.forwardMessage
  • messages.forwardMessages

我想用forwardMessage方法將消息從channel,groupuser轉發給另一個。這種方法的定義是:

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

正如你看到的這個方法有3個輸入參數:

  • peer表示channelgroupuser我們轉發消息。 (目的地)
  • idmessage_id
  • random_id有內部使用。

正如我們所知,message_id是聊天中的唯一號碼。因此在group中的message_id指的是與其他組中的message_id不同的消息。

所以主要的問題是,我們如何確定來源peer的轉發?因爲源peer不是由message_id決定的。

P.S:我的問題是關於Telegram API中的方法,而不是Telegram Bot API中的方法。

+0

的消息正在由你轉發,從你的會話,因此你不是源? –

+0

你需要哪些來源?我認爲你對前向功能有點困惑。也許你可以稍微澄清一下你的問題。該函數需要3個參數:message_id,目標組和一個隨機數。 message_id對發送給電報的每條消息都是唯一的。 – apadana

+0

@apadana,起初我有像你這樣的想法。我認爲'message_id'在Telegram裏是唯一的,所以它必須是一個很大的數字。但在測試之後,我認爲'message_id'只在聊天內部是唯一的。所以它是一個像2,5,...這樣的小int。 –

回答

1

ForwardMessageRequest似乎存在一個問題,它沒有指定源聊天。很顯然,message_id不是唯一的,通過我的測試,我發現錯誤的消息將通過指定message_id來轉發。我注意到message_id不是唯一的。

但是ForwardMessagesRequest並不存在這個問題。以下是如何使用ForwardMessagesRequest版本的示例。

轉移例如:

這裏是我用於測試的代碼(我用的馬拉松式節目的蟒蛇,但它並不重要,因爲它直接調用電報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))