aboutsummaryrefslogtreecommitdiff
path: root/modules/dice.py
diff options
context:
space:
mode:
authorGravatar dngfx2018-09-01 10:22:44 +0100
committerGravatar dngfx2018-09-01 10:22:44 +0100
commit3f66940e772702068288d072c96eb93020bd4873 (patch)
treef494292695ccac1ff0588c786f9d952ef39a7eab /modules/dice.py
parentSwitch print() to log.info() for next-duck-wave information. (diff)
signature
Remove superfluous code from ducks.py and introduce dice.py (DND rolling function .roll 1d20)
Diffstat (limited to 'modules/dice.py')
-rw-r--r--modules/dice.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/modules/dice.py b/modules/dice.py
new file mode 100644
index 00000000..9862b172
--- /dev/null
+++ b/modules/dice.py
@@ -0,0 +1,43 @@
+import random
+
+
+class Module(object):
+ def __init__(self, bot, events):
+ events.on("received.command.roll").hook(
+ self.roll_dice,
+ min_args=1,
+ help="Roll some dice, DND style!",
+ usage="[1-5]d[1-20]"
+ )
+
+ self.err_msg = "Incorrectly formatted dice! Format must be [number]d[number], for example, 1d20"
+
+ def roll_dice(self, event):
+ raw_input = event["args_split"][0]
+ roll = raw_input.split("d")
+ results = []
+
+ if len(roll) is not 2:
+ event["stderr"].write(self.err_msg)
+ return
+
+ if roll[0].isdigit() is False or roll[1].isdigit() is False:
+ event["stderr"].write(self.err_msg)
+ return
+
+ 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))
+
+ total = sum(results)
+ results = ', '.join(map(str, results))
+
+ event["stdout"].write("Rolled " + str_roll + " for a total "
+ + "of " + str(total)
+ + ": [" + results + "]")