#node.js #discord.js
#node.js #discord.js
Вопрос:
Вот моя проблема
const prefix = T!
const realPrefix = prefix.toLowerCase() || prefix;
Команда по-прежнему выполняется только с помощью «t!».. как вы можете видеть на этом скриншоте,
но я хочу, чтобы команда работала как с заглавной (T!), Так и с маленькой (t!)
Комментарии:
1. Не могли бы вы предоставить свой текущий код? Спасибо!
Ответ №1:
Я не знаю, как выглядит ваш код, но это сработало для меня! Вот пример
client.on("message", message => {
const prefix = "t!";
const args = message.content.slice(prefix.length).split(/ /);
const command = args.shift().toLowerCase();
if(message.content.toLowerCase().startsWith(prefix))
{
if(command === "ping") {
message.channel.send("Pong.")
}
}
});
client.login('BOT TOKEN);
Комментарии:
1. Спасибо за помощь br :)) мой код теперь работает очень хорошо..
Ответ №2:
Ошибка
Логический оператор OR ( ||
) вернет значение первого истинного операнда. В примере x || y
, если x
оно соответствует действительности, оно вернется x
. Если x
это неверно, оно вернется y
.
if (true || true) console.log(1);
if (true || false) console.log(2);
if (false || false) console.log(3);
Единственными ложными значениями являются false
, 0
, null
, NaN
, undefined
, и пустые строки. Это означает, что в вашем фрагменте prefix.toLowerCase()
всегда будет правдивым (если prefix
это не пустая строка), то y
есть операнд никогда не будет рассмотрен.
Решение (решения)
Безусловно, самым простым решением было бы преобразовать сообщение в нижний регистр вместо префикса.
if (!message.content.toLowerCase().startsWith('t!')) return;
const content = 'T!Hello World';
if (content.toLowerCase().startsWith('t!'))
console.log('Hurrah!');
Второй и немного более неясный метод будет использовать регулярное выражение.
if (!/^[tT]!/.test(message.content)) return;
// ^ - this must be the start of the message
// [tT] - this character can either be 't' or 'T'
// ! - this is a character literal (just !)
const content = 'T!Hello World';
if (/^[tT]!/.test(content)) console.log('Hurrah');