A Discord bot that organizes a weekly tabletop night. Players use buttons in Discord to volunteer as a GM, sign up to play, choose a table, or withdraw. The bot handles the schedule, fair GM selection, table sizes, waitlists, reminders, and the final roster.
You only need the guide for the job you are doing.
| I am… | What I need |
|---|---|
| A player or GM | Player and GM guide — Discord buttons and the few player commands. Nothing to install. |
| A weekly organizer | Organizer guide — run the week entirely inside Discord. No command line. |
| The Discord server owner | Discord server setup — use this after the bot responds to /ping. |
| The person putting the bot online | First deployment — the technical Discord and Cloudflare setup. |
| A service maintainer | Operations guide — updates, backups, recovery, and handoff. |
| A developer | Contributing guide — local tools, tests, and code changes. |
The complete audience-based documentation map is in docs/README.md.
A normal week happens in Discord:
- GMs click Run T1, Run T2, or Run T3 for the tier they will run; late-absence coverage uses Backup GM.
- Players click Play T1, Play T2, or Play T3 for their character's tier when player signup opens.
- The bot publishes the tables and says who has a reserved place or is waiting.
- Players click Join on a table. Later, any unclaimed seats become first-come, first-served.
- At game time, the bot closes table choices and posts the final roster.
Use /help in Discord for a private explanation at any time. Players do not run
setup, deployment, database, or npm commands.
- A five-stage weekly schedule in the guild's own time zone.
- Fair, repeatable GM rotation and table planning.
- Per-tier signup-order reservations, weekly and table waitlists, and automatic same-tier promotion when a seat opens.
- Review mode for organizers who want to approve tables, or Autopilot after the guild is comfortable with the workflow.
- Optional GM-signup, player-reminder, and organizer-alert role mentions.
- Final rosters, attendance confirmation, and DM priority tokens.
- Safe retries and an audit trail so a timeout does not create duplicate weeks, tables, reminders, or rewards.
Discord remains the member-facing home. Cloudflare Workers runs the bot, D1 stores its state, and a scheduled trigger advances the week. No volunteer's computer has to remain switched on.
The bot should not receive Discord Administrator permission. Its core channel permissions are View Channel, Send Messages, Embed Links, and Read Message History in each configured workflow channel. Attach Files is optional and is needed only for CSV export. Manage Roles is not required.
Admin responses and priority-token details are private. The bot restricts mentions, does not require Google or Raid Helper credentials, and provides a private CSV export only when an administrator asks for one.
See SECURITY.md for private vulnerability reporting and the operations guide for data handling and deletion.
The weekly workflow is implemented end to end and covered by unit and D1 integration tests. Raid Helper may remain beside the bot for unrelated events, but it is not a dependency. The boundaries are recorded in the Raid Helper decision and export decision.
Contributions are welcome under the MIT License. Start with CONTRIBUTING.md.
