vampire the masquerade discord rolling bot
license upload
license upload
320b0da7 — freedomischaos 1 year, 6 months ago
placeholder for defining the game subsystem


browse  log 



You can also use your local clone with git send-email.


A Discord bot for Vampire: The Masquerade V20 games. Created with Node.js and MongoDB.


Alpha version. Test build for chronicle https://www.sanguinus.org/.



  • Create characters and character profiles
  • Manage character sheets (still missing: Backgrounds, Disciplines, Merits/Flaws)


  • Define dice pools with numbers ('!r 7') or stats ("!rs str bra")
  • Consider stat specialties ('!r 7 spec')
  • Save rolls to perform them more quickly
  • Modify stat-based rolls and saved rolls ('!rs str bra -3')
  • Learn how much the dice gods love you by looking at the luck score, which compares your result to 10,000 other rolls with the same parameters.

Blood, Willpower, Health

  • Spend and get BP, get notified if you risk hunger frenzy
  • Spend WP and restore WP once a week (with admin command)
  • Take and heal damage, see wound penalties


  • Join with saved characters and NPCs (at the same time, if you want)
  • Get automatic prompts for declaring and resolving actions
  • Define automatic timeouts to make sure that scenes run smoothly
  • Pause timers and continue timers at any point
  • Skip players if they don't respond in time (or because you feel like it)
  • Perform initiative rolls and get initiative rankings automatically (ties are decided by initiative modifiers and then a coin flip).
  • Decide if initiative should be rolled each round or only once.
  • Automatically manage additional actions from Celerity
  • Display combat summaries with combatants and next actions
  • Manage several battles in different channels at the same time

Blood bonds

  • Perform Vaulderies to create vinculums between any number of players
  • Automatically perform city-wide Vaulderies
  • Flag Cainites who drank but did not contribute blood


bp-feed (feed) [(opt) amount]

  • Gain BP with your selected character. (Full BP if no amount is provided.)

bp-spend (bp) [(opt) amount] [(opt) comment]

  • Spends BP with your selected character. Spends 1 BP if no amount is provided.

char-all (allchars)

  • Shows a list of all active (and paused) characters.

char-my (mychars)

  • Shows a list of your characters.

char-new (newchar) [name]

  • Creates a new character.

char-profile (profile, p, show) [name]

  • Shows the profile of a character.

char-select (select) [name]

  • Selects one of your characters.

char-setprofile (setprofile)

  • Creates a profile for your active character.

combat [(opt) notimer/slow/medium/fast/blitz] [(opt) fixini]

  • Starts combat or changes an existing combat.

combat-celerity (celerity) [(opt) NPC]

  • Grants an extra action to your selected character or an NPC.

combat-continue (continue, skip)

  • Starts Round 1, skips players, and will remove timers.

combat-declare (declare) [action]

  • Sets the action of a character in combat.

combat-end (end)

  • Ends an ongoing combat in a channel.

combat-ini (ini, init) [ini modifier] [(opt) NPC]

  • Sets the initiative value of your selected character or an NPC.

combat-iniset (iniset) [PC/NPC] [ini] [(opt) ini modifier]

  • Adjusts or manually sets a new initiative value of a character/NPC.

combat-join (join) [(opt) NPC]

  • Join combat with your selected character or with an NPC.

combat-leave (leave) [(opt) NPC]

  • Leave combat with your selected character or with an NPC.

combat-pause (pause)

  • Pauses combat timers. Use combat-continue to continue.

combat-resolve (resolved, resolve)

  • Mark a previously declared combat action as resolved.

combat-summary (summary)

  • Shows the ini ranking and marks the player who has to act next.

damage-heal (heal) [amount] [b/l/a]

  • Heal damage with your selected character.

damage-take (take) [amount] [b/l/a]

  • Take damage with your selected character.

help [(opt) command name]

  • List all of my commands or info about a specific command.

roll-delete [name]

  • Deletes a saved roll for your selected character.

roll-ini [ini modifier]

  • Rolls your initiative (outside of bot-facilitated combat).

roll-load (rl) [roll name] [(opt) +/- modifier]

  • Performs a previously stored roll for your selected character.

roll-my (myrolls): Shows a list of stored rolls for your selected character.

roll-save [name] [dice pool] [(opt) difficulty] [(opt) comment] [(opt) "spec"]

  • Saves a roll for your selected character under a name.

roll-stats (rs) [(opt) difficulty] [stat names 1-3] [(opt) +/- modifier] [(opt) "spec"]

  • Performs a roll based on your character's stats.

roll (r) [dice pool] [(opt) difficulty] [(opt) comment] [(opt) "spec"]

  • Performs a standard xd10dY dice roll.

sheet-set (ss) [stat name] [value]

  • Sets a value on the sheet of your selected character. Via DM only.

sheet [(opt) character name]

  • Displays the sheet of your selected character, or any character

status (health)

  • Displays BP, WP, and Health of your selected character.

vaulderie [(opt) city] [character names 1-n]

  • Updates the vinculum ratings between characters. Use '-name' instead of 'name' for characters who drank but didn't contribute blood.

vinculums (myvincs)

  • Shows the vinculums of the selected character.

wp-replenish [(opt) character name]

  • Replenishes 1 WP for all active characters, or one character if a name is provided.

wp [(opt) comment]

  • Spends 1 WP with your selected character.


  • Create Docker volumes
docker volume create SanguinusVtM && docker volume create SanguinusVtM-db
  • Change into docker volume for SanguinusVtM location and clone in the code
git clone https://gitea.docks.echoless.space/david/SanguinusVtM.git
  • Create or copy the .env (from .env.example)

  • Obtain Discord bot token in the project's main folder with the following content:

SANGUINUS_VTM_TOKEN=[Discord bot token]
PREFIX=[special character that precedes the bot commands, e.g. !]
docker compose pull && docker compose up -d


Since things are still very much in flux, it's recommended to empty the Mongo database before updating the bot on your server.