diff --git a/partybot-matrix.py b/partybot-matrix.py index 0da8234..7cc3e72 100644 --- a/partybot-matrix.py +++ b/partybot-matrix.py @@ -60,9 +60,10 @@ def karma_cb(room, event): members = room.get_joined_members() msender = re.search('@([\w]+_)?([^:]+)', event['sender']) sender = msender.group(2) - tokens = re.search("([\w]+)\s?(\-\-|\+\+)", event['content']['body']) + tokens = re.search("([\w]+)\s?(\-\-|\+\+|\+=|\-=)\s?([1-9])?", event['content']['body']) handle = tokens.group(1) sign = tokens.group(2) + value = tokens.group(3) reply = "" if sender.lower() == handle.lower(): @@ -78,14 +79,14 @@ def karma_cb(room, event): kpool[sender.lower()] = {} kpool[sender.lower()]['last'] = datetime.datetime.now() kpool[sender.lower()]['count'] = 1 - _set_karma(room, event['room_id'], handle, sign) + _set_karma(room, event['room_id'], handle, sign, value) else: delta = datetime.datetime.now() - kpool[sender.lower()]['last'] print('seconds: ' + str(delta.seconds)) if kpool[sender.lower()]['count'] < 5: kpool[sender.lower()]['count'] += 1 - _set_karma(room, event['room_id'], handle, sign) + _set_karma(room, event['room_id'], handle, sign, value) else: if delta.seconds < 60: reply = "@" + sender + ": Whoa, back off a little human." @@ -93,17 +94,21 @@ def karma_cb(room, event): else: kpool[sender.lower()]['count'] = 1 kpool[sender.lower()]['last'] = datetime.datetime.now() - _set_karma(room, event['room_id'], handle, sign) + _set_karma(room, event['room_id'], handle, sign, value) break -def _set_karma(room, room_id, handle, sign): +def _set_karma(room, room_id, handle, sign, value=1): if sign == '++': rs.incr("partybot:k_" + room_id + "@" + handle.lower()) elif sign == '--': rs.decr("partybot:k_" + room_id + "@" + handle.lower()) + elif sign == '+=': + rs.incrby("partybot:k_" + room_id + "@" + handle.lower(), value) + elif sign == '-=': + rs.decr("partybot:k_" + room_id + "@" + handle.lower(), value) k = int(rs.get("partybot:k_" + room_id + "@" + handle.lower())) reply = handle + " has " + str(k) + " karma in this channel." @@ -132,11 +137,11 @@ if __name__ == "__main__": rs = redis.StrictRedis() bot = MatrixBotAPI(config['username'], config['password'], config['url']) - bot.add_handler(MRegexHandler("([\w]+)\s?(\-\-|\+\+)", karma_cb)) + bot.add_handler(MRegexHandler("([\w]+)\s?(\-\-|\+\+|\+=|\-=)", karma_cb)) bot.add_handler(MCommandHandler("karma", show_karma_cb)) bot.add_handler(MCommandHandler("botsnack", botsnack_cb)) bot.add_handler(MCommandHandler("botdrink", botdrink_cb)) - bot.add_handler(MRegexHandler("\s?\\m\/\s?", metal_cb)) + # bot.add_handler(MRegexHandler("\s?\\m\/\s?", metal_cb)) # Regex is hard or something bot.start_polling()