A discord bot that provides a variety of utility features for looking up game mechanics, boosting morale at the end of sessions, simplifying bookkeeping, and rolling dice in the New World of Darkness / Chronicles of Darkness, Pokemon Tabletop United, and Curseborne tabletop role-playing game (TTRPG) systems.
This bot is hosted on Heroku for private use. Please do not copy this repository's code or open pull requests for it. This bot is only public for portfolio purposes.
Step 1: Download dependencies (requires a github access token tied to account with access to privately hosted NPM packages in the @beanc16
namespace)
npm install
Step 2: Enable shared git hooks
git config core.hooksPath .githooks
Since 2014, my friends and I have been playing tabletop role-playing games (TTRPGs) remotely on Discord voice chat. Over the years, we've used various dice-rolling Discord bots, and I always wanted to make my own just for fun.
In April 2023, a friend and I decided to build a prototype of a simple dice-rolling Discord bot, and it quickly became something much more.
Our initial prototype had just one command: /roll
(now /nwod roll
), to roll 10-sided dice (d10s) for the New World of Darkness (nWOD) system, paired with randomized "flavor text" fetched from a custom Rust API. Though the flavor text feature is no longer active, this laid the foundation for a bot that’s fun, fast, and versatile.
Over time, we added several new dice-rolling commands, including:
/roll_math
for complex expressions (e.g., 2+3+2-1
, rolling 6d10s)./roll_lite
for multi-type dice rolls (e.g., 2d6 + d8 - 3
)./chance
and /luck
for rolling "chance dice" and "luck rolls"./coinflip
for flipping a coin.At the end of each TTRPG session, my friends and I like to end on a high note with round-robin compliments for each other. Alongside these compliments, we also pick someone to give a "beat" to (1/5 of an exp point in nWOD).
The /beat
command lets us tag and compliment each other, creating a fun, memorable log of each game’s highlights.
In August 2023, I joined a PTU campaign. PTU is fun but requires heavy bookkeeping, so I developed commands to help:
/ptu lookup
for quick access to game mechanics, integrating with Google Sheets as a pseudo-database, since PTU's character sheets are Google Sheets-based./ptu random
for random events./ptu train
to speed up Pokémon training, one of the most time-consuming parts of PTU./ptu calculate
for campaign math, like battle experience and Pokémon capture difficulty.For Curseborne, a new TTRPG from the nWOD creators, I created a dedicated /cb roll
command and /cb lookup
tool, adapting features as the brand-new system evolves.
Check out the issues for ongoing plans, including new features, bug fixes, and optimizations.