javascript - 我为 Discord 机器人创建了一个重新加载命令,我希望能够重新加载新命令而不是预先存在的命令
问题描述
所以我做了一个重新加载命令,重新加载预先存在的命令,而不会使机器人脱机。但现在我希望能够使用我添加的新命令进行更新。这是我现在拥有的代码
module.exports = {
name: 'reload',
aliasses: ['restart', 'rl'],
cooldown: 0,
usage: `reload <category> <command>`,
description: 'Reloads a command',
async execute(client, message, args, Discord, user, text){
if(message.author.id !== `DevID`) return message.channel.send('You are not a Dev');
if(!args[0]) return message.channel.send('You need to include the name of the command!');
let command = args[0].toLowerCase();
try {
delete require.cache[require.resolve(`../commands/${command}.js`)]
client.commands.delete(command);
const pull = require(`../commands/${command}.js`);
client.commands.set(command, pull);
return message.channel.send(`**${command}** was reloaded succesfully!`);
} catch (error) {
return message.channel.send(`There was an error trying to reload **${command}**: \`${error.message}\``);
}
}
}
最后,我想重新加载预先存在的命令并加载新命令,而无需让机器人脱机。
解决方案
也许这会起作用:
const Discord = require('discord.js');
const client = new Discord.Client();
var commands;
function requireUncached(module) {
delete require.cache[require.resolve(module)];
return require(module);
}
setInterval(() => {
commands = requireUncached(`whatever your file name is`);
}, 500)
所以我从来没有尝试过 module.exports 但我知道如果你为 requireUncached() 放入正确的文件,你可以在这段代码中使用变量“commands”访问命令
推荐阅读
- c++ - 我想更改变量值,但我想要的内存地址将保持不变,我该怎么做
- sql - Oracle 11g:插入记录时出现 ORA-00604 ORA-02429。无法插入表格
- .net - 部署警告 SQL46010:发布 SQL Server 项目时,.. 附近的语法不正确
- react-native - 使用在本机反应
- java - Java 数组不接受值
- android - 代码不起作用: void main() => runApp(MaterialApp(home: Center(child: Text('Hello World'))));
- php - 在我的 show.blade.php 文件中,当我遍历 $category->posts 时,我想排除视图显示的帖子
- javascript - 如果反应js中没有孙子项目,隐藏父项目标题的最佳方法
- gpflow - 具有先验分布的长度尺度自动相关性确定
- c# - 动态修改 appsettings.json 和刷新 Web 应用程序 - ASP.NET Core 和 Docker