【发布时间】:2020-07-24 02:48:43
【问题描述】:
我有一个工作机器人,有一个正常工作的命令处理程序,我有一个重新加载命令来更新我的代码以获取预先存在的命令。每当我添加一个新命令时,我都必须重新启动整个机器人。由于这个特定的机器人有运行间隔的脚本,重新启动我的机器人将终止所有运行间隔,迫使所有用户手动重新启动它们。我不想每次添加新命令时都不得不重启我的机器人,所以我需要帮助。
这是我现在的重新加载命令:
const botconfig = require("../config.json");
module.exports = {
name: 'reload',
type: "Developer",
description: 'Reloads a command (developer only)',
cooldown: 1,
execute(message, args) {
if (message.author.id != botconfig.developerid) return message.channel.send("Only my developer can use this command...");
message.channel.send("Developer command confirmed!");
if (!args.length) return message.channel.send(`You didn't pass any command to reload!`);
const commandName = args[0].toLowerCase();
const command = message.client.commands.get(commandName) ||
message.client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return message.channel.send(`There is no command with name or alias \`${commandName}\`, ${message.author}!`);
delete require.cache[require.resolve(`./${command.name}.js`)];
try {
const newCommand = require(`./${command.name}.js`);
message.client.commands.set(newCommand.name, newCommand);
message.channel.send("Command `" + command.name + "` was reloaded!");
} catch (error) {
console.log(error);
message.channel.send("There was an error while reloading the `" + botconfig.prefix + command.name + "` command. \n\nError is as follows:\n``${error.message}`");
}
},
};
我想在命令名称前添加一个可选的“新”参数来专门查找新命令,因为当前代码有效,但它只看到预先存在的命令。如果更改当前代码以另外查找新命令会更简单,但如果没有找到仍然会出错,那也很好。
【问题讨论】:
标签: javascript node.js discord discord.js