give better output to discord of dice rolls, handle errors
This commit is contained in:
parent
5e4bcf6b1c
commit
061a15caa3
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue