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))