diff options
| author | 2018-09-01 10:22:44 +0100 | |
|---|---|---|
| committer | 2018-09-01 10:22:44 +0100 | |
| commit | 3f66940e772702068288d072c96eb93020bd4873 (patch) | |
| tree | f494292695ccac1ff0588c786f9d952ef39a7eab /modules/dice.py | |
| parent | Switch 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.py | 43 |
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 + "]") |
