Telegram API 中有 2 种转发消息的方法:
我想使用
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。
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))
有什么办法可以发送给没有@用户名的人吗?也许通过 id 和访问哈希? 并非每个人都使用 telegram 用户名注册