2018-03-10 15:47:00 +08:00
|
|
|
/*
|
2018-03-14 13:26:53 +08:00
|
|
|
Description: Clears and resets the command modules, outputting any errors
|
2018-03-10 15:47:00 +08:00
|
|
|
*/
|
|
|
|
|
2018-09-30 14:44:36 +08:00
|
|
|
// module main
|
2018-03-10 15:47:00 +08:00
|
|
|
exports.run = async (core, server, socket, data) => {
|
2018-06-04 15:07:24 +08:00
|
|
|
// increase rate limit chance and ignore if not admin
|
2018-03-10 15:47:00 +08:00
|
|
|
if (socket.uType != 'admin') {
|
2018-09-30 14:44:36 +08:00
|
|
|
return server._police.frisk(socket.remoteAddress, 20);
|
2018-03-10 15:47:00 +08:00
|
|
|
}
|
|
|
|
|
2019-02-21 16:43:25 +08:00
|
|
|
// do command reload and store results
|
2019-03-19 14:36:21 +08:00
|
|
|
let loadResult = core.dynamicImports.reloadDirCache('src/commands');
|
2018-03-10 15:47:00 +08:00
|
|
|
loadResult += core.commands.loadCommands();
|
|
|
|
|
2018-09-30 14:44:36 +08:00
|
|
|
// clear and rebuild all module hooks
|
2019-02-21 16:43:25 +08:00
|
|
|
server.loadHooks();
|
2018-09-30 14:44:36 +08:00
|
|
|
|
2018-06-04 15:07:24 +08:00
|
|
|
// build reply based on reload results
|
2018-03-11 14:41:17 +08:00
|
|
|
if (loadResult == '') {
|
2019-02-03 05:34:06 +08:00
|
|
|
loadResult = `Reloaded ${core.commands._commands.length} commands, 0 errors`;
|
2018-03-14 13:26:53 +08:00
|
|
|
} else {
|
2019-02-03 05:34:06 +08:00
|
|
|
loadResult = `Reloaded ${core.commands._commands.length} commands, error(s):
|
|
|
|
${loadResult}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (typeof data.reason !== 'undefined') {
|
|
|
|
loadResult += `\nReason: ${data.reason}`;
|
2018-03-11 14:41:17 +08:00
|
|
|
}
|
2018-03-10 15:47:00 +08:00
|
|
|
|
2018-06-04 15:07:24 +08:00
|
|
|
// reply with results
|
2018-03-10 15:47:00 +08:00
|
|
|
server.reply({
|
|
|
|
cmd: 'info',
|
|
|
|
text: loadResult
|
|
|
|
}, socket);
|
|
|
|
|
2018-06-04 15:07:24 +08:00
|
|
|
// notify mods of reload #transparency
|
2018-03-10 15:47:00 +08:00
|
|
|
server.broadcast({
|
|
|
|
cmd: 'info',
|
|
|
|
text: loadResult
|
|
|
|
}, { uType: 'mod' });
|
|
|
|
};
|
|
|
|
|
2018-09-30 14:44:36 +08:00
|
|
|
// module meta
|
2018-05-13 18:33:22 +08:00
|
|
|
exports.info = {
|
|
|
|
name: 'reload',
|
2018-09-30 14:44:36 +08:00
|
|
|
description: '(Re)loads any new commands into memory, outputs errors if any',
|
|
|
|
usage: `
|
2019-02-03 05:34:06 +08:00
|
|
|
API: { cmd: 'reload', reason: '<optional reason append>' }`
|
2018-05-13 18:33:22 +08:00
|
|
|
};
|