仅清除单个消息时不发送消息已清除消息

时间:2021-08-01 02:27:53

标签: discord discord.js

这是我的消息成功清除的消息。第一个工作正常,我可以嵌入,但是当我尝试仅清除一条消息时,该消息可以正常删除,但我没有收到成功消息。提前致谢。

await message.channel.messages
.fetch({ limit: parseInt(args[0]) + 1 })
.then((messages) => {
    message.channel
        .bulkDelete(parseInt(args[0]) + 1)
        .then(() => {
            if (args[0] > 1) { 
                let clearMessages = new Discord.MessageEmbed()
            .addField("Success:",`Cleared ${args[0]} messages.`)
            .setColor("#000000")
            message.channel.send(
                clearMessages
            ).then(msg => {
                msg.delete({ timeout: 3000 })
              })
              .catch
                            
            } if (args[0] === 1) {
                let oneMessage = new Discord.MessageEmbed()
            .addField("Success:",`Cleared ${args[0]} message.`)
            .setColor("#000000")
            message.channel.send(
                oneMessage
            ).then(msg => {
                msg.delete({ timeout: 3000 })
              })
              .catch
            }
        })

2 个答案:

答案 0 :(得分:1)

使用 ===args[0](字符串)与 1(数字)进行比较将始终评估为 false。用 args[0] 包裹 parseInt 以从 args[0] 中取出一个数字。

此外,为了使代码更具可读性,我建议在消息嵌入字段中使用三元运算符检查 args[0] 是否为 1 或大于 1。

`Cleared ${args[0]} message${parseInt(args[0]) === 1 ? '' : 's'}.`

比上面发布的原始代码更具可读性。

答案 1 :(得分:1)

当您比较 args 时,您必须同时使用两个字符串或两个数字。

if(parseInt(args[0]) > 1) {
//...
}

对于strict comparison (===)

if(args[0] === '1') {
//
}
//also works with (args[0] == 1) and (parseInt(args[0]) === 1)
<块引用>

严格相等运算符(===)检查它的两个操作数是否相等,返回一个布尔结果。与相等运算符不同,严格相等运算符始终认为不同类型的操作数是不同的。 -MDN