-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
71 lines (55 loc) · 2.16 KB
/
app.js
File metadata and controls
71 lines (55 loc) · 2.16 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
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Slack Bot using Botkit
Acrobot listens for any acronyms that it knows about and provides
a link to wikipedia for the said acronym.
You can also ask acrobot to ignore an acronym using the ignore command.
e.g. @acrobot ignore xmpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
if (!process.env.slack_token ) {
console.log('Error: Specify slack_token in environment');
process.exit(1);
}
// 3rd party libs
var Botkit = require('BotKit');
// acrobot functionality
var acronyms = require('./acronym-finder.js')();
acronyms.ensureAcronymsBuilt();
var isAwake = true;
var controller = buildController(process.env);
var bot = controller.spawn({
token: process.env.slack_token
}).startRTM();
controller.hears(['wake'], 'direct_message,direct_mention,mention,ambient', function(bot, message) {
bot.reply(message, 'Good Morning');
isAwake = true;
});
controller.hears(['sleep'], 'direct_message,direct_mention,mention,ambient', function(bot, message) {
bot.reply(message, 'Night night');
isAwake = false;
});
controller.hears(['ignore (.*)'], 'direct_message,direct_mention,mention', function(bot, message) {
if (isAwake) {
var acronymToIgnore = message.match[1].toLowerCase();
acronyms.addToBlacklist(acronymToIgnore, bot, message, controller);
}
});
controller.hears(['(.*)'], 'direct_message,direct_mention,mention,ambient', function(bot, message) {
if (isAwake) {
acronyms.findAcronyms(bot, message, controller);
}
});
function buildController(env) {
var slackBotOptions = {
debug: false
};
// Hook up Firebase storage if it has been configured
if (env.firebase_url && env.firebase_url.length > 0) {
var firebaseConfig = {
firebase_uri: process.env.firebase_url,
firebase_secretToken: process.env.firebase_token
}
var firebaseStorageProvider = require('./firebase-storage.js')(firebaseConfig);
slackBotOptions.storage = firebaseStorageProvider;
}
return Botkit.slackbot(slackBotOptions);
}