所以我一直在使用Discord.JS庫處理一個不和機器人,我遇到了一個問題。很確定這個問題更多地涉及Javascript和Discord.JS,所以我會在這裏問一下,希望得到一些幫助。Discord Bot | DiscordJS | Javascript
我有一個名爲commandManager.js的文件,它包含我所有的基本命令功能。其中之一是自動加載/ commands /文件夾中的命令,並根據它們的類別(通過導出在命令中指定)將它們分配給一個數組。
global.userCommands = {};
global.modCommands = {};
global.adminCommands = {};
global.ownerCommands = {};
exports.init = function(bot)
{
fs.readdir("./commands/", (error, files) =>
{
if (error)
{
logger.error(error);
}
files.forEach(file =>
{
let commandFile = require(`../commands/${file}`);
let commandName = file.split(".")[0];
if (commandFile.info.category == "User")
{
userCommands[commandName] = commandFile;
}
else if (commandFile.info.category == "Mod")
{
modCommands[commandName] = commandFile;
}
else if (commandFile.info.category == "Admin")
{
adminCommands[commandName] = commandFile;
}
else if (commandFile.info.category == "Owner")
{
ownerCommands[commandName] = commandFile;
}
else
{
logger.warn("Could not add the command " + commandName + " to any of the categories");
}
});
logger.info("Loaded " + files.length + " command(s)");
});
}
然後在此之後,我可以在消息比特實際的機器人,我做了如下使用命令:
exports.run = function(bot, msg)
{
const args = msg.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const cleanCommand = command.slice(config.prefix.length);
if (msg.author.bot)
{
return;
}
else if (msg.content.indexOf(config.prefix) !== 0)
{
return;
}
else if (has.call(userCommands, cleanCommand))
{
msg.reply("user");
}
else if (has.call(modCommands, cleanCommand))
{
}
else if (has.call(adminCommands, cleanCommand))
{
}
else if (has.call(ownerCommands, cleanCommand))
{
}
else
{
msg.reply(`that command does not even exist! You can say ${config.prefix}help for a list of commands!`);
}
}
所以當我說的命令,例如「平」它應該回復msg.reply(「用戶」),但它表示它不存在任何。我宣稱已經像這樣一個全球性的事情,因此你很好奇。
global.has = Object.prototype.hasOwnProperty;
如果你想看到它是如下命令:
exports.info =
{
name: "Ping",
permission: 10,
category: "User",
about: "Makes the bot respond with pong, useful to see if the bot is working."
};
exports.run = function(msg)
{
msg.channel.send("Pong!");
}
任何提示,引用的例子,或只是普通的勺子餵養是100%的歡迎。另外,如果你想分享一些更好的技術來做我正在做的事情,請讓我知道,因爲我只是JS的初學者。
爲什麼不'userCommands [cleanCommand]'?而類別應該是什麼? –
那麼,如果我將來要做一個命令列表,那麼類別就是我將它們分開的想法。不知道爲什麼不誠實與你。任何類別的更好的想法,或我可以做什麼,而不是得到相同的結果? –