2017-07-27 222 views
0

我有一個問題,我真的不知道如何解決。當我嘗試在我的代碼中實現更改前綴命令時,我想要使用它時會出現錯誤。首先代碼全部在1個文件中,並且工作正常,但是我分割了文件,以便命令分別具有不同的文件。這是代碼不再工作的地方。我相信這是因爲我不擅長JavaScript,但請幫助我!錯誤botord更改前綴命令(discord.js)

這是主要的文件:

const Discord = require("discord.js"); 
 
const config = require("./config.json"); 
 
const client = new Discord.Client(); 
 
const newUsers = []; 
 
const fs = require("fs") 
 

 
// Error en warning berichten. 
 
client.on("error", (e) => console.error(e)); 
 
client.on("warn", (e) => console.warn(e)); 
 

 

 
// This loop reads the /events/ folder and attaches each event file to the appropriate event. 
 
fs.readdir("./events/", (err, files) => { 
 
    if (err) return console.error(err); 
 
    files.forEach(file => { 
 
    let eventFunction = require(`./events/${file}`); 
 
    let eventName = file.split(".")[0]; 
 
    // super-secret recipe to call events with all their proper arguments *after* the `client` var. 
 
    client.on(eventName, (...args) => eventFunction.run(client, ...args)); 
 
    }); 
 
}); 
 

 
client.on("message", message => { 
 
    if (message.author.bot) return; 
 
    if(message.content.indexOf(config.prefix) !== 0) return; 
 

 
    // This is the best way to define args. Trust me. 
 
    const args = message.content.split(/\s+/g); 
 
    const command = args.shift().slice(config.prefix.length).toLowerCase(); 
 

 
    // The list of if/else is replaced with those simple 2 lines: 
 
    try { 
 
    let commandFile = require(`./commands/${command}.js`); 
 
    commandFile.run(client, message, args); 
 
    } catch (err) { 
 
    console.error(err); 
 
    } 
 
}); 
 

 
exports.run = (client, message, args) => { 
 
    if(!args || args.size < 1) return message.reply("Must provide a command name to reload."); 
 
    // the path is relative to the *current folder*, so just ./filename.js 
 
    delete require.cache[require.resolve(`./${args[0]}.js`)]; 
 
    message.reply(`The command ${args[0]} has been reloaded`); 
 
}; 
 

 
client.login(config.token);

這是前綴文件:

exports.run = (client, message, args) => { 
 
    const modRole = message.guild.roles.find("name", "Discord Admin"); 
 
    if (!modRole) 
 
    return console.log("The Discord Admin role does not exist."); 
 

 
    if (!message.member.roles.has(modRole.id)) 
 
    return message.reply("You can't use this command."); 
 

 
    // Verandert de prefix van de command (vb. "!prefix +" ontvangt de "+" dus word het "+prefix"). 
 
     let newPrefix = message.content.split(" ").slice(1, 2)[0]; 
 
     // Verandert de configuratie in memory 
 
     config.prefix = newPrefix; 
 
     // Slaat het bestand op. 
 
     fs.writeFile("./config.json", JSON.stringify(config), (err) => console.error); 
 
}

而且在配置文件: 「字首」:」!」

我真的努力了很多東西,但我保持這種錯誤的Node.js:

ReferenceError: config is not defined at Object.exports.run (C:\Users\fleur\Desktop\botdiscord\commands\prefix.js:12:7)

回答

0

你忘了需要configcommands\prefix.js

如果你想在節點的全局變量。你必須把它分配給全球範圍。

請參閱本文node.js global variables?

+0

我必須在此文件夾http://prntscr.com/g0xob0 的config.json文件是有辦法,我可以做需要的命令,即使它不是在命令文件夾? – peerbam

+0

你可以用它的相對路徑來要求它:'const config = require('../ config.json')' –

+0

當我這樣做的時候,我仍然得到相同的錯誤.. – peerbam