forked from jarofghosts/ziggy-karma
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
135 lines (106 loc) · 3.27 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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
var levelup = require('levelup')
var ziggy_db = levelup('./karma-db')
karma.help = [
'!m, !thanks, !ty <name> - add karma to <name>'
, '!dm, !boo <name> - remove karma from <name>'
, '!hf <name> - add *lots* of karma to <name>'
, '!flog <name> - remove *lots* of karma from <name>'
, '!k <name> - check <name>\'s karma score'
].join('\n')
module.exports = karma
function karma(ziggy, _db, _onchange) {
var onchange = _onchange || noop
, db = _db || ziggy_db
ziggy.on('message', parse_command)
function parse_command(user, channel, text) {
var bits = text.split(' ')
, karma_user = bits.length > 1 ? bits.slice(1).join(' ').trim() : null
, command = bits[0]
if (command[0] !== '!') return
({
'!m': motivate
, '!motivate': motivate
, '!merit': motivate
, '!thanks': thank_user
, '!ty': thank_user
, '!highfive': high_five
, '!hf': high_five
, '!dm': demotivate
, '!demotivate': demotivate
, '!demerit': demotivate
, '!boo': demotivate
, '!k': check_points
, '!karma': check_points
, '!flog': flog
, '!durant' : durant
}[command] || noop)()
function motivate() {
if (!karma_user) karma_user = channel
ziggy.say(channel, 'You\'re doing great work, ' + karma_user + '!')
set_karma(karma_user, 1)
}
function durant() {
if (!karma_user) karma_user = channel
if(karma_user === channel){
ziggy.say(channel, 'Thanks ' + karma_user + '. You guys and gals are da real mvps.')
} else {
ziggy.say(channel, 'Thanks ' + karma_user + '. You da real mvp.')
}
set_karma(karma_user, 1)
}
function demotivate() {
if (!karma_user) karma_user = channel
ziggy.say(channel, 'You\'re doing terrible work, ' + karma_user + '!')
set_karma(karma_user, -1)
}
function flog() {
if (!karma_user) karma_user = channel
ziggy.say(
channel
, 'You\'re doing terrible work, ' + karma_user +
'! You must be flogged.'
)
set_karma(karma_user, -10)
}
function high_five() {
if (!karma_user) karma_user = channel
ziggy.say(channel, 'High five, ' + karma_user + '! Great work!')
set_karma(karma_user, 10)
}
function thank_user() {
if (!karma_user) karma_user = channel
ziggy.say(
channel
, 'Thank you, ' + karma_user + ', you are a fine human being!'
)
set_karma(karma_user, 1)
}
function check_points() {
if (!karma_user) karma_user = user.nick
db.get(karma_user.toLowerCase(), show_karma)
function show_karma(err, previous) {
if (err) {
if (err.type !== 'NotFoundError') return
previous = 0
}
var point_word = previous === '1' ? 'point' : 'points'
ziggy.say(
channel
, karma_user + ' has ' + previous + ' karma ' + point_word + '!'
)
}
}
}
function set_karma(_entity, diff) {
var entity = _entity.toLowerCase()
db.get(entity, modify_karma)
function modify_karma(err, current) {
if (err) {
if (err.type !== 'NotFoundError') return
current = 0
}
db.put(entity, +current + diff, onchange)
}
}
}
function noop() {}