如果dyscord.py中有message.id,如何删除消息?

时间:2020-05-16 17:01:37

标签: python discord.py

说我有一个消息ID,我该如何通过另一个频道中的ID删除该特定消息?

我目前有一个机器人将原始消息和机器人消息ID都发送给另一台不和谐的服务器的用户消息。现在,当用户从原始服务器删除他们的消息时,我希望机器人通过消息ID在我的其他服务器中删除该消息。

带有两个消息ID的数组如下:

allmessages = [[id1,id2],[id1,id2],[id1,id2]] #. . . so on

我正在使用它来查看用户何时删除邮件:

@client.event
async def on_message_delete(message):

在其中,我有一个for循环,该循环遍历我的消息以查看哪个ID被删除,然后获取另一个我要删除的ID。通过ID删除消息的部分...我已经尝试了一切:

if message.channel.id == idGoesHere:
   channel = client.get_channel(theOtherChannelID)
   msg = IDIwantToDelete
   await msg.delete()

或者:

await client.http.delete_message(channel, msg)

什么都没有。

如何通过简单易用的频道ID删除邮件?

我也不想听到告诉我使用on_message侦听器函数删除内部内容的答案,这不是我对机器人的使用。我不想立即删除一条消息,仅当删除侦听器被调用时。谢谢。

2 个答案:

答案 0 :(得分:1)

存储消息对象而不是ID是可行的。 :)

答案 1 :(得分:0)

您可以使用fetch_message来检索消息对象,然后调用其删除方法:

msg = await channel.fetch_message(id)
await msg.delete()