-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
executable file
·94 lines (70 loc) · 2.36 KB
/
index.js
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"use strict";
var debug = require('debug')('MAIN:');
var fs = require('fs');
var irc = require('irc');
var argv = require('minimist')(process.argv.slice(2));
var config = {};
var plugins = [];
process.on('uncaughtException', function (err) {
console.error('ERROR: uncaughtException', err);
console.error(err.stack);
process.exit(1);
});
if (argv.config) {
debug('USE:CONFIG:USER', argv.config);
config = require(argv.config);
} else {
debug('USE:CONFIG:PACKAGE');
config = require('./config');
}
if (process.env.IRCBOT_NICKNAME) {
config.irc.nickname = process.env.IRCBOT_NICKNAME;
debug('ENV:IRCBOT_NICKNAME:' + config.irc.nickname);
}
if (process.env.IRCBOT_SERVER) {
config.irc.server = process.env.IRCBOT_SERVER;
debug('ENV:IRCBOT_SERVER:' + config.irc.server);
}
if (process.env.IRCBOT_CHANNELS) {
config.irc.options.channels = process.env.IRCBOT_CHANNELS.replace(/\s+/g, '').split(',');
debug('ENV:IRCBOT_CHANNELS:' + config.irc.options.channels);
}
// add ircbot nickname to allowed admins
config.admins[config.irc.nickname.toLowerCase()] = true;
// cleanup nicknames to lowercase
for (var entry in config.admins) {
var key = entry.toLowerCase();
var val = config.admins[entry];
delete config.admins[entry];
config.admins[key] = val;
}
debug('CONFIG:ADMINS:', config.admins);
var client = new irc.Client(
config.irc.server,
config.irc.nickname,
config.irc.options
);
debug('START:', argv);
client.addListener('error', function (error) {
console.error('MAIN:ERROR:', error);
});
client.addListener('registered', function (raw) {
debug(config.irc.server);
if (process.env.IRCBOT_NICKSERV) {
debug('MAIN:REGISTERED:IRCBOT_NICKSERV', process.env.IRCBOT_NICKSERV);
client.say('NickServ', 'identify ' + process.env.IRCBOT_NICKSERV);
} else {
console.error('MAIN:REGISTERED:WARNING: IRCBOT NICKSERV PASSWORD missing - set env IRCBOT_NICKSERV');
}
});
plugins = fs.readdirSync('./plugins');
config.plugins.debug = (process.env.IRCBOT_DEBUG || process.env.DEBUG) || false;
debug('AVAILABLE:PLUGINS:', plugins);
// load plugins
plugins.forEach(function (plugin) {
var pluginDir = './plugins/' + plugin + '/';
if (config.plugins[plugin] && fs.existsSync(pluginDir)) {
require(pluginDir).init(client, config);
debug('PLUGIN:LOADED', plugin);
}
});