-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathbot.js
executable file
·54 lines (46 loc) · 1.61 KB
/
bot.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
var Botkit = require('botkit');
var redis = require('botkit/lib/storage/redis_storage');
var http = require('http');
var url = require('url');
var redisURL = url.parse(process.env.REDISCLOUD_URL);
var redisStorage = redis({
namespace: 'botkit-example',
host: redisURL.hostname,
port: redisURL.port,
auth_pass: redisURL.auth.split(":")[1]
});
var controller = Botkit.slackbot({
storage: redisStorage
});
var bot = controller.spawn({
token: process.env.SLACK_TOKEN
}).startRTM();
controller.hears(['call me (.*)'],'direct_message,direct_mention,mention',function(bot, message) {
var matches = message.text.match(/call me (.*)/i);
var name = matches[1];
controller.storage.users.get(message.user,function(err, user) {
if (!user) {
user = {
id: message.user,
};
}
user.name = name;
controller.storage.users.save(user,function(err, id) {
bot.reply(message,'Got it. I will call you ' + user.name + ' from now on.');
});
});
});
controller.hears(['what is my name','who am i'],'direct_message,direct_mention,mention',function(bot, message) {
controller.storage.users.get(message.user,function(err, user) {
if (user && user.name) {
bot.reply(message,'Your name is ' + user.name);
} else {
bot.reply(message,'I don\'t know yet!');
}
});
});
// To keep Heroku's free dyno awake
http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Ok, dyno is awake.');
}).listen(process.env.PORT || 5000);