-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdevrel.js
More file actions
executable file
·101 lines (87 loc) · 3.98 KB
/
devrel.js
File metadata and controls
executable file
·101 lines (87 loc) · 3.98 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/**
* DevRel Bot for Slack !
* @author: Vasu Jain VJ
*/
// Libraries
var BotConfig = require('./config.json');
var Botkit = require("botkit");
// Models
var SOFModel = require("./models/stackoverflow");
var DevDetailsModel = require("./models/devDetails");
var GithubModel = require("./models/github");
var TwitterModel = require("./models/twitter");
var CommandsModel = require("./models/commands");
var DilbertModel = require("./models/dilbert");
var HelpModel = require("./models/help");
// Setup the Botkit controller
var controller = Botkit.slackbot({
debug: false
});
var slackTokenEncrypted = BotConfig.admin_config.slack.slack_token_encrypted;
var slackTokenBuf = new Buffer(slackTokenEncrypted, 'base64');
var token = slackTokenBuf.toString("ascii");
console.log(token);
//default config variable would be read from config.json, would be overwrite, if custom config found
if (token) {
console.log("Starting in single-team mode");
controller.spawn({
retry: true,
token: token
}).startRTM(function(err, bot, payload) {
console.log("Loaded config parameters from config.json ");
if (err) {
console.log(err);
throw new Error(err);
}
});
}
// Handle events related to the websocket connection to Slack
controller.on('rtm_open', function(bot) {
console.log('** The RTM api just connected!');
});
controller.on('rtm_close', function(bot) {
console.log('** The RTM api just closed');
});
/* ************************* SLACK BOT CONTROLLERS ******************************** */
controller.on('bot_channel_join', function(bot, message) {
bot.reply(message, "Thank you for inviting me to your Slack Channel!");
});
controller.hears(['hello', 'hi', 'greetings'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("Hello Human !! You can invoke commands: `help` or `sample` to get started");
bot.reply(message, "Hello Human !! You can invoke commands: `help` or `sample` to get started");
});
controller.hears(['^sof tag=(.*)', '^sof intitle=(.*)', '^sof issues', '^stackoverflow issues'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("Stack Overflow issues (.*)!! ");
var tag = message.match[1];
var intitle = message.match[2];
SOFModel.getIssuesWithCustomLabel(bot, message, tag, intitle);
});
controller.hears(['^github issues', '^gh issues'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("GitHub issues !! ");
var labels = BotConfig.github.public.labels;
var orgSize = BotConfig.github.public.organizations.length;
GithubModel.getReposIssuesWithLabel(bot, message, labels, orgSize);
});
controller.hears(['^tweet (.*) (.*)', '^tweet (.*)', '^tweet', '^t (.*) (.*)', '^t (.*)', '^t'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("twitterClient !! ");
var tweetUser = message.match[1];
var tweetCount = message.match[2];
TwitterModel.twitterApiCallCustomUser(bot, message, tweetUser, tweetCount);
});
controller.hears(['^dilbert (.*)', '^dilbert', '^comic (.*)', '^comic'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("Dilbert !! ");
var comicDate = message.match[1];
DilbertModel.getComic(bot, message, comicDate);
});
controller.hears(['^developer', '^architect'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("Dev !! -- Listing developer Details ...");
DevDetailsModel.getDetails(bot, message);
});
controller.hears(['^sample', '^commands'], ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("sample !! -- Listing sample commands ...");
CommandsModel.getDetails(bot, message);
});
controller.hears('help', ['direct_mention', 'mention', 'direct_message'], function(bot, message) {
console.log("Help !! -- Listing all the supported commands ...");
HelpModel.getDetails(bot, message);
});