如何在 Telegram API 中转发消息

问题描述 投票:0回答:2

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

  • messages.forwardMessage
  • messages.forwardMessages

我想使用

forwardMessage
方法将消息从
channel
group
user
转发到另一个。该方法的定义是:

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

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

  • peer
    代表我们将消息转发到的
    channel
    group
    user
    。 (目的地)
  • id
    message_id
  • random_id
    具有内部用途。

众所周知,

message_id
是聊天中的唯一号码。因此
message_id
中的
group
指的是与其他组中相同
message_id
不同的消息。

所以主要问题是我们如何确定转发的来源

peer
?因为源
peer
不是由
message_id
决定的。

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

api telegram
2个回答
2
投票

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

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

转发示例:

这是我用于测试的代码(我使用Python的Telethon,但这并不重要,因为它直接调用telegram 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))

0
投票

有什么办法可以发送给没有@用户名的人吗?也许通过 id 和访问哈希? 并非每个人都使用 telegram 用户名注册

© www.soinside.com 2019 - 2024. All rights reserved.