-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
63 lines (51 loc) · 2.14 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
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require('fs');
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
const flavors = config['flavors']
const lowerCaseFlavors = flavors.map(flavor => flavor.toLowerCase());
client.on('message', message => {
if (message.content.startsWith(config['command'])) {
let flavor = message.content.split(' ').slice(1);
if (flavor.length < 1) {
message.reply(config['specifyFlavorReply']);
return;
} else if (flavor.length > 1) {
message.reply(config['moreThenOneFlavorReply']);
return;
}
flavor = flavor[0];
if (message.guild === undefined || !message.guild.available)
return;
const flavorIndex = lowerCaseFlavors.indexOf(flavor.toLowerCase());
if (flavorIndex === -1) {
message.reply(config['flavorDoesNotExistReply']);
return;
}
// Flavor in the correct case
const canonical_flavor = flavors[flavorIndex];
const roles = message.guild.roles.array();
const roleIndex = roles.map(role => role.name).indexOf(canonical_flavor);
if (roleIndex === -1) {
message.reply(config['roleDoesNotExistReply']);
console.error('Flavor ' + canonical_flavor + ' is listed in the flavors section, but is not a role in the guild ' + message.guild.name);
return;
}
// First, remove all other flavor roles
message.member.roles.array().forEach(userRole => {
if (userRole.name !== flavor && flavors.indexOf(userRole.name) > -1) {
message.member.removeRole(userRole).catch(err => {
message.reply(config['internalErrorReply']);
console.error(err);
});
}
});
message.member.addRole(roles[roleIndex]).then(_ => {
message.reply(config['doneReply']);
}, err => {
message.reply(config['internalErrorReply']);
console.error(err);
});
}
});
client.login(config["token"]);