-
-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathapp.js
62 lines (53 loc) · 2.31 KB
/
app.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
global.__basedir = __dirname;
const Client = require('./src/Client.js');
const {Statics} = require('./src/utils/utils');
require('./src/utils/prototypes').arrayProto(Array);
const Webserver = require('./src/Webserver.js');
const config = Statics.config;
const client = new Client(config, {
partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
allowedMentions: {parse: ['users', 'roles'], repliedUser: true},
});
client.loadEvents('./src/events');
client.loadTopics('./data/trivia', 'trivia');
client.loadTopics('./data/geoguessr', 'geoguessr');
client.login(client.config.token).then(() => {
client.loadCommands('./src/commands');
client.handleMusicEvents();
if (config.owners.length) {
client.owners = config.owners.map(ownerId => client.users.fetch(ownerId).then(user => user.id).catch(() => {
client.logger.error(`Owner with ID ${ownerId} not found.`);
return null;
}));
Promise.all(client.owners).then(owners => {
client.owners = owners.filter(owner => owner !== null);
client.logger.info(`Bot owners: ${client.owners.length ? client.owners : 'None'}`);
});
}
if (config.managers?.length) {
client.managers = config.managers.map(managerId => client.users.fetch(managerId).then(user => user.id).catch(() => {
client.logger.error(`Manager with ID ${managerId} not found.`);
return null;
})).filter(manager => manager);
Promise.all(client.managers).then(managers => {
client.managers = managers.filter(manager => manager !== null);
client.logger.info(`Bot managers: ${client.managers.length ? client.managers : 'None'}`);
});
}
if (config.webserver.enabled) {
new Webserver(client);
}
else {
client.logger.info('Skipped WebServer creation. Set "useWebServer" to true in config.yaml to enable it.');
if (config.apiKeys.topGG.useMode === 'webhook_mode') {
throw('"topGG.useMode" mode is set to webhook mode, but "webserver.enabled" is set to false. Consider setting "topGG.useMode" to "api_mode" or setting "webserver.enabled" to true.');
}
}
}).catch(err => {
console.error(err);
process.exit(1);
});
process.on('unhandledRejection', (err) => {
client.logger.error(err);
console.log(err);
});