31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
|
from modules.common.module import BotModule
|
||
|
import d20
|
||
|
|
||
|
class MatrixModule(BotModule):
|
||
|
async def matrix_message(self, bot, room, event):
|
||
|
args = event.body.split()
|
||
|
args.pop(0)
|
||
|
|
||
|
if args[0] == 'help':
|
||
|
await bot.send_text(room, self.long_help())
|
||
|
else:
|
||
|
try:
|
||
|
result = d20.roll(' '.join(args), stringifier=d20.SimpleStringifier())
|
||
|
await bot.send_text(room, str(result), event=event)
|
||
|
except:
|
||
|
await bot.send_text(room, 'Invalid roll syntax', event=event)
|
||
|
|
||
|
def help(self):
|
||
|
return 'Rolls dice in XdY format'
|
||
|
|
||
|
def long_help(self, bot=None, event=None, **kwargs):
|
||
|
text = self.help() + (
|
||
|
'\n- "!roll 1d20": roll a single d20'
|
||
|
'\n- "!roll 1d20+4": A skill check or attack roll'
|
||
|
'\n- "!roll 1d20+1 adv": A skill check or attack roll with advantage'
|
||
|
'\n- "!roll 1d20-1 dis": A skill check or attack roll with disadvantage'
|
||
|
'\n- "!roll help": show this help'
|
||
|
'\n'
|
||
|
'\nFor more syntax help, see https://d20.readthedocs.io/en/latest/start.html#dice-syntax')
|
||
|
return text
|