-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
58 lines (49 loc) · 1.84 KB
/
index.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
54
55
56
57
58
module.exports = function (team, projectMapId, setProjectMap, dbTokens, authUrl, METAMAPS_URL, persistToken) {
var CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
var RtmClient = require('@slack/client').RtmClient;
var WebClient = require('@slack/client').WebClient;
var RTM_EVENTS = require('@slack/client').RTM_EVENTS;
var DataStore = require('@slack/client').MemoryDataStore;
var dataStore = new DataStore();
var tokens = dbTokens;
var users = {};
var token = team.bot_access_token;
var botId = team.bot_user_id;
var web = new WebClient(token);
var rtm = new RtmClient(token, {logLevel: 'info', dataStore: dataStore});
rtm.start();
function dmForUserId(userId) {
var channel = dataStore.getDMByName(dataStore.getUserById(userId).name).id;
return channel;
}
function userName(userId) {
var user = dataStore.getUserById(userId)
return user ? user.name : null
}
var COMMANDS = require('./commands.js')(web, rtm, tokens, users, persistToken, botId, METAMAPS_URL, authUrl, dmForUserId, userName, projectMapId, setProjectMap, team.name);
function verified(message) {
if (!tokens[message.user]) {
var id = rtm.activeTeamId + message.user;
rtm.sendMessage('You haven\'t authenticated yet, please go to ' + authUrl + '?id=' + id, dmForUserId(message.user));
return false;
}
return true;
}
rtm.on(RTM_EVENTS.MESSAGE, function (message) {
if (!message.text) return;
var ran;
COMMANDS.forEach(function (command) {
if (!ran &&
message.text.slice(0, command.cmd.length) === command.cmd &&
command.check(message) &&
(!command.requireUser || verified(message))) {
ran = true;
command.run(message);
}
});
});
return function addTokenForUser(userId, token) {
tokens[userId] = token;
rtm.sendMessage('Nice! You are now authorized with metamaps.', dmForUserId(userId));
}
} // end module.exports