这是我的消息成功清除的消息。第一个工作正常,我可以嵌入,但是当我尝试仅清除一条消息时,该消息可以正常删除,但我没有收到成功消息。提前致谢。
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
}
})
答案 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