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)
我必須在此文件夾http://prntscr.com/g0xob0 的config.json文件是有辦法,我可以做需要的命令,即使它不是在命令文件夾? – peerbam
你可以用它的相對路徑來要求它:'const config = require('../ config.json')' –
當我這樣做的時候,我仍然得到相同的錯誤.. – peerbam