我正在使用Telethon创建python程序,以找到一种在删除源消息后在目标通道中删除消息的方法。
例如:
A-源频道
B-目标频道
A发布一条消息X,该消息X转发到目标频道B。过了一段时间,A删除了消息X,B也应删除该消息。
我的代码如下:
@client.on(events.MessageDeleted)
async def edit_message_bot(event):
...
但是问题是,当我使用此方法时,源和目标通道的event msg_id有所不同,因此找不到删除它的方法。
请帮助
答案 0 :(得分:1)
我在MessageDeleted
事件中发现了source code,文档显示:
电报不发送有关哪里消息的信息 如果发生在与其他用户的私人对话中,则被删除 或小组聊天中,因为消息ID是唯一 如果保存了聊天,则可以仅使用消息ID来识别聊天 以前。
Telethon 不保存有关消息发生位置的信息, 因此它不知道消息在哪个聊天中被删除(这将 仅适用于存在频道ID 的频道。
这意味着
chats=
参数将无法可靠运行, 除非您打算只与频道和超级群组一起使用。
对于您而言,应该获取chats
参数,该参数可以提供帮助。另外,您应该使用deleted_ids
,而不是msg_id
。 Link
我认为您应该将原始消息的消息ID和消息的ID存储在目标通道中,以便轻松找到它。因此,您将拥有一本类似于字典的东西,原始ID和一个新ID一起存储。