From 061a15caa3828bff50484fc30c4338942ba9de62 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sat, 29 Jun 2019 10:55:26 -0500 Subject: [PATCH] give better output to discord of dice rolls, handle errors --- hitomi/dice.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/hitomi/dice.py b/hitomi/dice.py index ec4cff6..778d7c0 100644 --- a/hitomi/dice.py +++ b/hitomi/dice.py @@ -1,10 +1,11 @@ """Commands for dice rolling type behavior.""" import logging +import re from discord.ext import commands from hitomi import bot -from hitomi.backends import dr_botzo +from hitomi.backends import dr_botzo, DrBotzoError logger = logging.getLogger(__name__) @@ -13,15 +14,23 @@ class Dice(commands.Cog): """Commands for rolling dice and whatnot.""" @commands.command() - async def roll(self, ctx, dice): + async def roll(self, ctx, *, dice): """Roll a provided dice string. Format: T#K/NdS+M; T = times, K = keep, N = number, S = sides, M = modifier """ + await ctx.trigger_typing() logger.info("rolling dice: %s", dice) - result = dr_botzo.post('/dice/rpc/roll/', json={'dice': dice}) - logger.debug(result) - await ctx.send(result.json()) + try: + response = dr_botzo.post('/dice/rpc/roll/', json={'dice': dice}) + response.raise_for_status() + logger.debug("result of rolling dice: HTTP %s, %s", response.status_code, response.text) + output = re.sub(r'(\d+)(.*?\s+)(\(.*?\))', r'**\1**\2\3', response.json()['result']) + output = '\n'.join(output.split('; ')) + await ctx.send(output) + except DrBotzoError as drex: + logger.exception("received an error from dr.botzo attempting to roll %s: %s", dice, drex) + await ctx.send(f"*{drex.detail}*") bot.add_cog(Dice(bot))