Как я могу установить значение префикса в верхний и нижний регистр? (Discord.js )

#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');