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 删除消息而不是命令的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 用于删除所有不是机器人命令的消息

Discord.js 删除命令消息

discord.js 如何删除所有频道中包含黑名单的消息

如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息

如何检查消息是不是存在? (discord.js)

在 Discord JS 中删除消息通知