From 73ecb42ca9717dd0b4591c20f28c6d24c3c46ecb Mon Sep 17 00:00:00 2001 From: jesopo Date: Sat, 17 Nov 2018 12:18:26 +0000 Subject: [PATCH] Simplify modules/dice.py --- modules/dice.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/modules/dice.py b/modules/dice.py index 42d048cf..0505bea6 100644 --- a/modules/dice.py +++ b/modules/dice.py @@ -10,29 +10,20 @@ class Module(ModuleManager.BaseModule): :help: Roll some dice, DND style! :usage: [1-5]d[1-20] """ - raw_input = event["args_split"][0] - roll = raw_input.split("d") - results = [] - - if len(roll) is not 2: + roll = event["args_split"][0].lower() + count, sides = roll.partition("d") + if not count.isdigit() or not sides.isdigit(): raise utils.EventError(ERROR_FORMAT) - if roll[0].isdigit() is False or roll[1].isdigit() is False: - raise utils.EventError(ERROR_FORMAT) + count_n = min(int(roll[0]), 5) + sides_n = min(int(roll[1]), 20) - roll = [int(roll[0]), int(roll[1])] - - num_of_die = 5 if roll[0] > 5 else roll[0] - sides_of_die = 20 if roll[1] > 20 else roll[1] - - str_roll = str(num_of_die) + "d" + str(sides_of_die) - - for i in range(0, num_of_die): - results.append(random.randint(1, sides_of_die)) + reults = random.choices(range(1, die_sides), k=die_count) total_n = sum(results) total = "" if len(results) > 1: total = " (total: %d)" % total_n + event["stdout"].write("Rolled %s and got %s%s" % ( - str_roll, ", ".join(str(r) for r in results), total)) + roll, total_n, ", ".join(results)))