forked from maxrpeterson/dianabot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcore-bot-functions.js
More file actions
74 lines (65 loc) · 2.48 KB
/
core-bot-functions.js
File metadata and controls
74 lines (65 loc) · 2.48 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
69
70
71
72
73
74
var fs = require('fs');
var queue;
function backup(queueArray) {
fs.writeFile('./db.json', JSON.stringify({queue: queueArray}));
}
try {
queue = JSON.parse(fs.readFileSync('./db.json', 'utf8')).queue;
} catch(e) {
queue = [];
backup(queue);
}
var prettyQueue = function() {
var queueArray = queue.map(function(user) {
return user.real_name;
});
return "Current queue is now: " + (queueArray.length ? queueArray.join(", ") : "empty");
};
module.exports = function(bot, taID) {
var dianabot = function(message, cb) {
// the if/else if statements are for commands that don't rely
// on the wording as much
if (message.type === "message" && message.text !== undefined && message.text.indexOf(bot.mention) > -1) {
if (message.text.indexOf("status") > -1) {
bot.sendMessage(message.channel, prettyQueue());
} else if (message.text.indexOf("queue me") > -1 || message.text.indexOf("q me") > -1) {
// adding a user to the queue
if (queue.filter(function(e) {return e.id === message.user}).length === 0) {
bot.api("users.info", {user: message.user}, function(data) {
queue.push(data.user);
bot.sendMessage(message.channel, prettyQueue());
backup(queue);
});
} else {
bot.sendMessage(message.channel, "Already in queue. " + prettyQueue());
}
} else if (message.text.indexOf("remove me") > -1) {
// removing a user
var userToRemove = queue.filter(function(user) {return user.id === message.user});
if (userToRemove.length) {
queue.splice(queue.indexOf(userToRemove[0]), 1);
bot.sendMessage(message.channel, ":wave: " + prettyQueue());
backup(queue);
}
} else if (message.text.indexOf("next") > -1 && message.user === taID) {
// next student
var currentStudent = queue.shift();
if (currentStudent) {
bot.sendMessage(message.channel, "Up now: <@" + currentStudent.id + "> -- " + prettyQueue());
backup(queue);
}
} else if (message.text.indexOf("help") > -1) {
// help message
bot.sendMessage(message.channel, "All commands work only when you specifically mention me. Type `queue me` or `q me` to queue yourself and `status` to check current queue. Type `remove me` to remove yourself.")
} else if (message.text.indexOf("clear queue") > -1 && message.user === taID) {
queue = [];
bot.sendMessage(message.channel, "Queue cleared");
backup(queue);
}
} else if(message.type === "hello") {
console.log("dianabot connected...");
}
cb(null, 'core-bot');
};
return dianabot;
};