hitomi/hitomi/dice.py

36 lines
1.1 KiB
Python

"""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, DrBotzoError
logger = logging.getLogger(__name__)
class Dice(commands.Cog):
"""Commands for rolling dice and whatnot."""
@commands.command()
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)
try:
response = dr_botzo.post('/dice/rpc/roll/', json={'dice': dice})
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))