Discord.js 删除消息而不是命令
Posted
技术标签:
【中文标题】Discord.js 删除消息而不是命令【英文标题】:Discord.js delete messages not commands 【发布时间】:2021-07-25 00:37:14 【问题描述】:您好,我重新发布这篇文章是因为在上一篇文章中我一定解释错了。我的意思是,在发送一条 MESSAGE(不是命令)例如 f3eufgjnei gergergce4ger gergrg 或其他垃圾邮件后,它将被删除(不是在垃圾邮件几分钟后),但在发送后立即删除,如果你不知道答案,请帮助,请不要发送带有 cmets 标记的文档,因为在之前的帖子中没有任何内容很多人给我发送的文档没有帮助,代码如下:)
if (message.content === `$prefixverify`)
message.delete();
if (message.channel.id === '838040640377585664')
let role = message.guild.roles.cache.find(r => r.id === "838037327589670962");
message.member.roles.add(role);
message.author.send(`test`)
$verify 命令删除,仅此而已,但其他消息不会删除(消息不是命令!)
【问题讨论】:
首先检查频道ID,然后检查消息内容是否为verify
,否则执行message.delete()
,如果不是命令则删除消息。您正在以相反的顺序执行此操作,因为您正在检查消息内容是否为 verify
,然后执行 message.delete()
删除命令。
@Radnerus 我知道这可能太多了,但请把代码发给我?????
【参考方案1】:
首先检查频道 ID,然后检查消息内容是否验证,否则执行 message.delete(),如果消息不是命令,则会删除该消息。您正在以相反的顺序执行此操作,因为您正在检查消息内容是否已验证,然后执行 message.delete() 删除命令。
例如:
if (message.channel.id === '838040640377585664')
if (message.content === `$prefixverify`)
return message.channel.send('verified'); //or do your thing with a return statement
message.delete();
基本上它会首先检查它是否是频道,如果是则检查消息是否为!verify
,然后它将发送你在 if 语句中所做的任何事情,但记得返回(停止进一步执行程序)。如果不是这种情况,那么它将删除。
或者,您可以将它们包含在 if、else 语句中。
例如:
if (message.channel.id === '838040640377585664')
if (message.content === `$prefixverify`)
//do your thing
else
message.delete();
【讨论】:
以上是关于Discord.js 删除消息而不是命令的主要内容,如果未能解决你的问题,请参考以下文章
如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息