From 8479ac8c3f74398d3a14000adf5760f78aa078a0 Mon Sep 17 00:00:00 2001 From: iou1name Date: Thu, 5 Jul 2018 13:27:48 -0400 Subject: [PATCH] added user rolling support --- events.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/events.py b/events.py index 6d5950a..08ec4d4 100644 --- a/events.py +++ b/events.py @@ -2,6 +2,7 @@ """ SocketIO events. """ +import re import time import random @@ -47,10 +48,45 @@ def message(data): message = "
".join(lines) message = tools.handle_img(message) data["message"] = message - + db.log_chat_message(data) emit("message", data, room=room) + if message.startswith("/dice") or message.startswith("/roll"): + handle_dice(data) + + +def handle_dice(data): + """ + Handle /dice or /roll messages. + """ + room = data["room"] + reg = re.search(r"(\d+)d(\d+)([+-]\d+)?", data['message']) + if not reg: + return + try: + diceNum, diceSides, diceMod = map(int, reg.groups()) + assert 0 < diceNum < 100 + assert 0 < diceSides < 100 + assert -1000 < diceMod < 1000 + except (ValueError, AssertionError): + return + dice = [random.randint(1, diceSides) for _ in range(diceNum)] + total = sum(dice) + if diceMod: + total += diceMod + msg = f"Rolled {', '.join(map(str, dice))}" + if diceMod: + if diceMod > 0: + msg += " +" + msg += " " + str(diceMod) + msg += " = " + str(total) + "" + date = int(time.time()) + name = "Server" + data = {"message": msg, "name": name, "date": date, "room": room} + #emit("message", data, room=room) + message(data) + @socketio.on("new_post") def new_post(data):