#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
}
})
Комментарии:
1. Это не связано с проблемой, с которой вы столкнулись: рассмотрите возможность использования тернарного оператора для проверки значения
args[0]
и добавления » s » в «сообщение», чтобы сделать ваш код более читаемым и чистым.
Ответ №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"
… или использовать обычное сравнение (==)
Ответ №2:
При сравнении аргументов необходимо использовать обе строки или оба числа.
if(parseInt(args[0]) > 1) {
//...
}
И для строгого сравнения ( ===
)
if(args[0] === '1') {
//
}
//also works with (args[0] == 1) and (parseInt(args[0]) === 1)
Оператор строгого равенства (===) проверяет, равны ли два его операнда, возвращая логический результат. В отличие от оператора равенства, оператор строгого равенства всегда рассматривает операнды разных типов как разные.
-MDN