Как получить значение из любого. js файла с помощью module.exports? - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок в JS и программировании в целом, поэтому, пожалуйста, объясните это с учетом. Я знаю, что этот вопрос сформулирован не очень хорошо, но я не мог придумать, как его сформулировать лучше, поэтому смело редактируйте его. Я создаю дискотечного бота с диссонансом. js. Я сделал команду под названием «тест». Мой код выглядит следующим образом (в файле с именем test. js):

module.exports = {
    name: 'test',
    description: 'Test command. Sends back "Test successful."',
    prefixType: 'devPrefix',
    execute(msg, args) {
        if (!args.length){
            msg.channel.send('Test successful.');
        } else {
            msg.channel.send('Test successful. You entered ' + args.length + ' argument(s).')
        }   
    },
};

Как мне получить значение prefixType и использовать его в моем файле индекса index. js? Однако решение должно работать для любого файла в папке (называемой «командами»), а не только с test. js.

Если это поможет, я включаю код в свой основной индекс. js файл, который касается обработки и выполнения команд:

const Discord = require('discord.js');
const fs = require('fs');   //For commands (fs = file system)
const botClient = new Discord.Client;
const CONFIG = require('./config.json');

//Get the commands
botClient.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    botClient.commands.set(command.name, command);
}

botClient.once('ready', () => {
    console.log('Bot online and ready.');
});

botClient.on('message', msg => {
    if ((!msg.content.startsWith(CONFIG.prefix) && !msg.content.startsWith(CONFIG.devPrefix)) 
        || msg.author.bot) return;

    const args = msg.content.slice(CONFIG.prefix.length).split(' ');
    const commandName = args.shift().toLowerCase();

    //If the command doesn't exist
    if (!botClient.commands.has(commandName)){
        msg.reply("That command does not exist. Do a.commands for a list of all commands");
        return;
    }

    const command = botClient.commands.get(commandName);

    try {
        command.execute(msg, args);
    } catch (error) {
        console.error(error);
        console.log('Error when trying to get and execute a command.');
        msg.reply('There was an error trying to execute that command.');     
    }
});

Спасибо

1 Ответ

1 голос
/ 07 апреля 2020

Поскольку вы экспортируете этот файл в командный файл, который вам позже понадобится, и поместите его в botClient.commands Collection, вы можете получить доступ к prefixType везде, где у вас есть доступ к вашему client. botClient.commands.get('test').prefixType даст вам это свойство.

Кроме того, вы можете получить доступ к свойству client из большинства структур Discord. js, например Message или User, выполнив message.client или user.client. А поскольку ваша коллекция команд привязана к вашему клиентскому объекту, вы можете получить к нему доступ, как в примере выше.

...