-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
71 lines (69 loc) · 2.08 KB
/
main.js
File metadata and controls
71 lines (69 loc) · 2.08 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
var Botkit = require('botkit');
var os = require('os');
var controller = Botkit.slackbot();
var bot = controller.spawn({
// spooky slack token
// token: ""
})
var owners = ["user1", "user2"];
bot.startRTM(function(err, bot, payload) {
if (err) {
throw new Error('Could not connect to Slack');
}
controller.hears(["Status"], ["mention", "direct_message", "direct_mention"], function(bot, message) {
bot.reply("All good!");
});
controller.hears(["code", "coding"], ["mention", "direct_message", "direct_mention", "ambient"], function(bot, message) {
bot.reply("Go coding! Go CFC!");
});
controller.hears(['uptime'], ['direct_message,direct_mention,mention'], function(bot, message) {
var hostname = os.hostname();
var uptime = formatUptime(process.uptime());
bot.reply(message, ':cfc: I have been running for ' + uptime + ' on ' + hostname + '.');
});
controller.hears(["shutdown"], ["direct_message", "ambient"], function(bot, message) {
bot.startConversation(message, function(err, convo) {
convo.ask('Are you sure you want me to shutdown?', [{
pattern: bot.utterances.yes,
callback: function(response, convo) {
if (owners.indexOf(response.user) > -1) {
convo.say('Shutting down... :robot_face:');
convo.next();
setTimeout(function() {
process.exit();
}, 3000);
} else {
convo.say("Permission denied :robot_face: - only Alex or Liam can shut me down!");
convo.next();
}
}
}, {
pattern: bot.utterances.no,
default: true,
callback: function(response, convo) {
convo.say('*Phew!*');
convo.next();
}
}]);
});
});
controller.hears(["."], ["mention", "direct_mention"], function(bot, message) {
bot.botkit.log("New mention by " + message.user + " in " + message.channel + "! " + message.text);
});
function formatUptime(uptime) {
var unit = 'second';
if (uptime > 60) {
uptime = uptime / 60;
unit = 'minute';
}
if (uptime > 60) {
uptime = uptime / 60;
unit = 'hour';
}
if (uptime != 1) {
unit = unit + 's';
}
uptime = uptime + ' ' + unit;
return uptime;
}
});