Dice roller for tabletop games with some specific leanings towards Pathfinder 2e.
Make sure you have RocksDB installed wherever you plan to run this and isntall everything else from requirements.txt. Set the DISCORD_BOT_TOKEN with your bot's access token and run from the entrypoint at src/anathema.py
Maybe I should make a copywrite disclaimer about Sun Tzu's The Art of War but I imagine it's in public domain by now? If you are a lawyer, feel free to open an issue I suppose.
Generally follows the same syntax as Dice Maiden
!roll [DIE_EXPR|MOD_EXPR] [+|-] DIE_EXPR|MOD_EXPR] ... [XFORM_EXPR] ! <reason>
Where:
DIE_EXPR is XdX, e.g. 1d20,2d6
MOD_EXPR is X, e.g. 1, 8
XFORM_EXPR are currently:
khX: "Keep highest X", will take the top X rolls from each DIE_EXPR result
klX: "Keep lowest X", will take the bottom X rolls from each DIE_EXPR result
reason can be any text which explains the result in the response
Full example:
!roll 2d6 + 1d8 +4 -1 kh1 ! attack vs goblin AC
Additionally, some simple "macros" are supported with the syntax:
!set-command <command_name> :: <command_expression>
Where the command expression is anything that could be valid to another handler.
Optionally you can add a {} to allow some text to be injected into the command when you call it.
For example:
!set-command attack :: !roll 1d20 + 8 {} ! attack
and then
!attack -2 , which will expand to: !set-command attack :: !roll 1d20 + 8 -2 ! attack