-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.js
More file actions
87 lines (67 loc) · 2.86 KB
/
app.js
File metadata and controls
87 lines (67 loc) · 2.86 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
// Hipchat dependencies
var ack = require('ac-koa').require('hipchat');
var pkg = require('./package.json');
var app = ack(pkg);
// Nerd Bot dependencies
var bunyan = require('bunyan');
var HandlerService = require('./services/handlerService.js');
var MagicCardService = require('./services/magic/cardService.js');
var HearthstoneCardService = require('./services/hearthstone/cardService.js');
// Handlers
var MagicCardHandler = require('./handlers/magic/cardHandler.js');
var MagicRandomHandler = require('./handlers/magic/randomHandler.js');
var MagicHelpHandler = require('./handlers/magic/helpHandler.js');
var HearthstoneCardHandler = require('./handlers/hearthstone/cardHandler.js');
var ErrorHandler = require('./handlers/errorHandler.js');
// Handlebars
require('./templates/helpers/helpers.js');
// Setup logging
var log = bunyan.createLogger({
name: 'nerd-bot'
});
log.info("Starting up.");
log.info("Setting up koa app and hipchat permissions.");
// Setup the app, request needed permissions
var addon = app.addon()
.hipchat()
.allowRoom(true)
.scopes('send_notification');
log.info("Registering the handlers.");
// Register the handlers
var magicHandlers = new HandlerService(log);
magicHandlers.add(new MagicCardHandler(new MagicCardService('https://api.deckbrew.com/mtg/', 'http://tappedout.net/api/v1/render_card/', log), log));
magicHandlers.add(new MagicRandomHandler(new MagicCardService('https://api.deckbrew.com/mtg/', 'http://tappedout.net/api/v1/render_card/', log), log));
magicHandlers.add(new MagicHelpHandler(magicHandlers, log));
var hearthstoneHandlers = new HandlerService(log);
hearthstoneHandlers.add(new HearthstoneCardHandler(new HearthstoneCardService('https://omgvamp-hearthstone-v1.p.mashape.com/cards', log), log));
// Setup the key used by hipchat
if (process.env.NERDBOT_KEY) {
addon.key(process.env.NERDBOT_KEY);
}
log.info("Defining the webhooks to be used by hipchat.");
// Define the webhooks
addon.onWebhook('install', function * () {
yield this.roomClient.sendNotification('Hey Nerds!');
});
addon.onWebhook('uninstall', function * () {
yield this.roomClient.sendNotification('WHY U UNINSTALL?');
});
addon.webhook('room_message', /^\/magic /, function * () {
try{
yield this.roomClient.sendNotification(yield magicHandlers.handle(this.content));
}catch (e){
var errorHandler = new ErrorHandler();
yield this.roomClient.sendNotification(yield errorHandler.handle(this.sender.name));
}
});
addon.webhook('room_message', /^\/hearth /, function * () {
try{
yield this.roomClient.sendNotification(yield hearthstoneHandlers.handle(this.content));
}catch (e){
var errorHandler = new ErrorHandler();
yield this.roomClient.sendNotification(yield errorHandler.handle(this.sender.name));
}
});
log.info("Starting the koa app.");
app.listen();
log.info("Start up successfull!");