繁体   English   中英

如何使用discord.py按ID删除特定消息

[英]How to delete a specific message by ID using discord.py

我正在尝试使用它的 ID 删除一条消息。 我正在使用discord.py。

逻辑流程

用户发送命令。 示例: !message hi
Bot 使用用户的消息 ID 删除“!message hi”
机器人说“嗨”

我已经想出了如何让它复制我的消息,但我很难让它删除它们。 我不想说它会在消息出现之前删除它,否则在繁忙的服务器上它可能无法工作。 我想获取命令消息的 ID,然后使用它的 ID 删除它。

回答问题:要通过 ID 删除消息,您必须获取消息对象(首选)或通过client.http (非首选)


第一个选项:查找消息。

您可以使用Client.get_message函数

msg = await client.get_message(channel, message_id)

或者,您的特定用例似乎只是删除发送的消息,因此您可以使用on_message(msg)提供的on_message(msg)
收到消息后,您可以执行以下操作:

await client.delete_message(msg)

编辑 discord.py v1.2+

您应该改用Channel.fetch_message函数。

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

第二种选择:使用 client.http

假设你知道频道的 ID,你可以简单地调用

await client.http.delete_message(channel_id, message_id)

如果可以选择获取消息,则不应使用此方法对于在任意位置删除任意消息很有用。

要删除并不获取信息使用TextChannel.delete_messages ,构建一个雪花使用discord.Object

await channel.delete_messages([discord.Object(id=message_id)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM