如何将消息从另一个用户的频道正确转发到群组?
Posted
技术标签:
【中文标题】如何将消息从另一个用户的频道正确转发到群组?【英文标题】:How to Properly forward a message from another user's channel into a group? 【发布时间】:2017-11-20 03:30:33 【问题描述】:我想知道如何使用来自电报 API 的 messages.forwardMessage 将来自给定频道 ID 的消息与消息编号(例如当您从电报本身复制消息链接时)转发到给定的组加入链接功能?
即:这是我的目的地加入链接:https://t.me/joinchat/AAAAAAlw6NYyLMlMES5hbw
这是应该转发到上述链接的消息: https://t.me/kjdfvbjkdfbvkj/3
谢谢 (特别是@apadana)
【问题讨论】:
@apadana 好的,我在等你,谢谢 有一些细节涉及从用户/组/超级组/频道转发到用户/组/超级组/频道。你想做哪一个?公共频道分组(可能还有超级组)? 还有你在发消息前完成了加入部分吗?或者您在加入小组时也需要帮助? 【参考方案1】:这里是如何从一个组(不是超组)转发到一个频道。如果您正在寻找其他东西,请发表评论。
#testChannel
source_chat_id=12345
source_access_hash=1234567890
source_chat = InputPeerChannel(source_chat_id, source_access_hash)
#testGroup:
dest_chat_id = 123456
# chat = InputPeerChannel(chat_id, access_hash)
total_count, messages, senders = client.get_message_history(
source_chat, limit=10)
msg = messages[0]
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))
【讨论】:
@Burzum 你能运行这个for循环并发布结果吗?对于反向的味精(消息):打印(“味精:”,味精.id,味精)。我的猜测是您可能正在转发非消息。您也可以尝试删除 for 循环 for forwardmessage 并尝试使用一个您知道是消息的 id。 @Burzum 另请注意,我稍微更改了答案以使用 ForwardMessagesRequest 而不是 ForwardMessageRequest (没有)。 ForwardMessageRequest 似乎有一个错误,它不在 Messages 版本中。同样使用消息版本,您无需多次拨打电话。您可以在 id 列表中传递多条消息。 @Burzum 对于超级组,您需要将它们视为频道。所以代替 InputPeerChat 使用 InputPeerChannel 也需要一个 access_hash。 我想我明白了,我如何确定给定的加入链接是超级组还是组? 我知道了:telethon.errors.rpc_error_list.ChatIdInvalidError: (ChatIdInvalidError(...), 'Invalid object ID for a chat. Make sure to pass the right types, for instance making sure that the request is designed for chats (not channels/megagroups) or otherwise look for a different one more suited\\nAn example working with a megagroup and AddChatUserRequest, it will fail because megagroups are channels. Use InviteToChannelRequest instead')
以上是关于如何将消息从另一个用户的频道正确转发到群组?的主要内容,如果未能解决你的问题,请参考以下文章
Django Channels - 当组成员时无法直接向频道发送消息
Telegram Bot 如何从频道或群组中删除或移除消息或媒体