forked from jmatsu/terraform-provider-slack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.ts
51 lines (41 loc) · 1.32 KB
/
bot.ts
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
const { Botkit } = require('botkit');
const { SlackAdapter, SlackMessageTypeMiddleware, SlackEventMiddleware } = require('botbuilder-adapter-slack');
require('dotenv').config();
const adapter = new SlackAdapter({
verificationToken: process.env.VERIFICATION_TOKEN,
clientSigningSecret: process.env.CLIENT_SIGNING_SECRET,
botToken: process.env.BOT_TOKEN,
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
scopes: [
'bot',
'usergroups:read',
'usergroups:write',
'users:read',
'users:read.email',
'channels:read',
'channels:write',
'groups:read',
'groups:write'
]
});
adapter.use(new SlackEventMiddleware());
adapter.use(new SlackMessageTypeMiddleware());
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter
});
controller.webserver.get('/install', (req, res) => {
res.redirect(controller.adapter.getInstallLink());
});
controller.webserver.get('/install/auth', async (req, res) => {
try {
const results = await controller.adapter.validateOauthCode(req.query.code);
console.log(results);
res.json('Success! Bot installed.');
} catch (err) {
console.error('OAUTH ERROR:', err);
res.status(401);
res.send(err.message);
}
});