-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommand-handler.js
More file actions
68 lines (60 loc) · 1.9 KB
/
command-handler.js
File metadata and controls
68 lines (60 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
'use strict';
const { sprintf } = require(`sprintf-js`)
, EventEmitter = require(`eventemitter3`)
, Discord = require(`discord.js`)
, BotHelper = require(`./bot-helper`)
, ConfigProvider = require(`./config/provider`)
, ConfigParameter = require(`./config/parameter`)
, HelpCommand = require(`./command/help-command`)
, ConfigCommand = require(`./command/config-command`)
, UpvoteCommand = require(`./command/upvote-command`)
, OwnerCommand = require(`./command/owner-command`)
, messages = require(`./messages`)
;
const commandEmitter = new EventEmitter();
module.exports = class {
/**
* Registers available commands
*/
static register() {
commandEmitter.removeAllListeners();
const commands = [
HelpCommand
, ConfigCommand
, UpvoteCommand
, OwnerCommand
];
commands.forEach((command) => {
command.register(commandEmitter);
});
}
/**
* @param {string} commandName
* @param {Array} params
* @param {Discord.Message} message
*/
static run(commandName, params, message) {
const messageAuthorId = BotHelper.getAuthorId(message);
if (0 === commandEmitter.listenerCount(commandName)) {
BotHelper.sendMessage(
message
, sprintf(
messages.unsupportedCommand
, messageAuthorId
, ConfigProvider.get(ConfigParameter.COMMAND_PREFIX)
, commandName
)
);
return;
}
try {
commandEmitter.emit(commandName, params, message);
} catch (err) {
console.error(err);
BotHelper.sendMessage(
message
, sprintf(messages.systemError, messageAuthorId)
);
}
}
};