Discord.js | Как мне сделать так, чтобы вы могли запускать команду с текстом, который находится в переменной?

#discord #discord.js

#Discord #discord.js

Вопрос:

Я не очень хорошо разбираюсь в английском, так что извините за это, я хочу, чтобы вы могли запускать команды типа /sayEN , но EN находится в переменной типа

 const language = {
"EN": "English",
"ESP": "Espanol"
}
  

так, как вы можете запускать команду и с текстом, который находится в переменной

я пытался создать код, но я слишком запутанный

 let messageArray = message.content.split(" ");
let cmd = messageArray[0];
let args = message.content.substring(message.content.indexOf(' ') 1);

var lang = {
"EN": "English",
"ESP": "Espanol"
}


if (cmd === (prefix   `say${lang}`)) /*lol how do i make like `say${the text that are in the variable*/ {
      message.reply(${lang}) /*what i mean here is the command that the user inputs,
 like if i say "/sayESP" then the reply will be ESP too*/
    }
  

пожалуйста, извините за мой плохой английский
, здесь более понятно и просто

 const lang = {
"EN": "English",
"ESP": "Espanol
}

**The Discord Chat**

User: /sayEN

bot: English

User: /sayESP

bot: Espanol
  

Ответ №1:

Попробуйте этот код: пусть переменная хранилища будет a [используйте массив вместо объекта: const a = ['EN','ESP']; ]:

 const a = ['EN','ESP'];
const b = ['English','Espanol'];

if (command.startsWith(PREFIX 'say'){
    command.slice(PREFIX.length 3);
    if (a.includes(command){
        message.channel.send(b[a.indexOf(command)]);
    }
}
  

Ответ №2:

Лучший способ выполнить эту операцию — создать /commands папку внутри папки вашего проекта и создать командные сценарии для каждой из ваших команд. Шаблон командного скрипта может быть следующим:

 module.exports.run = async (bot, message, args) => {
  // All Command Operations Here
};
exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: [],
  permlevel: 0
};

exports.help = {
  name: 'command name',
  description: 'Description',
  usage: 'usage description'
};
  

Например, создайте файл с именем sayENG.js и поместите его внутрь:

 module.exports.run = async (bot, message, args) => {
  // Code here what if you want to send when a user sends a message that starts with /sayENG
};
exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: [],
  permlevel: 0
};

exports.help = {
  name: 'sayENG',
  description: 'say English',
  usage: '/sayENG <message>'
};
  

Чтобы получить доступ к этим файлам в вашем индексном файле, вы должны добавить эти команды в индексный файл.

 client.commands = new Discord.Collection();
client.aliases = new Discord.Collection();
fs.readdir("./commands/", (err, files) => {
  if (err) console.error(err);
  log(`${files.length} commands will be uploaded.`);
  files.forEach(f => {
    let props = require(`./komutlar/${f}`);
    log(`Uploaded command: ${props.help.name}.`);
    client.commands.set(props.help.name, props);
    props.conf.aliases.forEach(alias => {
      client.aliases.set(alias, props.help.name);
    });
  }); //
});

client.reload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./commands/${command}`)];
      let cmd = require(`./commands/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e) {
      reject(e);
    } //L
  });
};

client.load = command => {
  return new Promise((resolve, reject) => {
    try {
      let cmd = require(`./commands/${command}`);
      client.commands.set(command, cmd);
      cmd.conf.aliases.forEach(alias => {
        client.aliases.set(alias, cmd.help.name);
      });
      resolve();
    } catch (e) {
      reject(e); //
    }
  });
};

client.unload = command => {
  return new Promise((resolve, reject) => {
    try {
      delete require.cache[require.resolve(`./komutlar/${command}`)];
      let cmd = require(`./commands/${command}`);
      client.commands.delete(command);
      client.aliases.forEach((cmd, alias) => {
        if (cmd === command) client.aliases.delete(alias);
      });
      resolve();
    } catch (e) {
      reject(e);
    }
  });
};