CinvanaAI
← All projects

Tool · Games & interaction

Persistent Discord RPG

Build Discord campaigns and character-creation conversations that can resume after a bot restart.

Repository: CinvanaAI/persistent-discord-rpg

Recorded synthetic example. Source with a complete offline example.

See the idea in action.

A reopened SQLite store recovers the campaign and the exact pending DM step. `--check` verifies bot startup wiring without reading a token or contacting Discord.

Example input
A synthetic campaign, invited player, accepted membership and character-name step.
Captured result
{
  "mode": "Synthetic IDs; actual SQLite storage",
  "campaign": "Lantern Workshop",
  "player_membership": "accepted",
  "resumed_state": "charcreate_character_name",
  "resumed_campaign": "Lantern Workshop",
  "pending_payload": {
    "campaign_id": 1,
    "campaign_name": "Lantern Workshop"
  },
  "discord_calls": 0
}

Try the example.

From the repository root, follow the dependency requirements in the README. This example uses supplied synthetic material.

python -m pip install -e .
python -m examples.offline_demo
python bot.py --check

A reopened SQLite store recovers the campaign and the exact pending DM step. `--check` verifies bot startup wiring without reading a token or contacting Discord.

Complete setup and instructions ↗

The interesting part.

Durable conversation state makes long-running bot workflows recoverable without keeping wait_for tasks alive.

Integrated source snapshot

Where it came from.

Historical Phoenix 2 Discord RPG application.

February 2026 — Its character subsystem is documented for this month; the full project start date is not established. Source ↗

Preserves the campaign and character application while replacing credentials, closing storage connections and implementing a bounded dice resolver.

The full parent remains available independently of its focused rules and state extractions.

Source ↗

Follow the family: Persistent Discord RPG and its reusable mechanisms

  • Focused extractionPersistent Interaction State

    Inspect or reuse this boundary without navigating the whole application. The extract contains new neutral interfaces and hardening; the original integrated application remains represented.

    Source ↗
  • Focused extractionRPG Character Rules

    Inspect or reuse this boundary without navigating the whole application. The extract contains new neutral interfaces and hardening; the original integrated application remains represented.

    Source ↗