"Where every emoji becomes a spell, every message a plot twist, and your server a living novel."
QuestForge is a next-generation Discord bot that evolves the traditional RPG bot concept into a self-aware narrative ecosystem. Unlike static role-play bots that simply manage scenes and roles, QuestForge uses generative AI (OpenAI + Claude) to dynamically craft storylines, adapt character arcs, and react to player decisions in real-time. Transform your server into a collaborative fantasy-writing experience where non-player characters (NPCs) learn from player interactions and the world evolves organically.
Traditional role-play bots act as game masters—QuestForge acts as a co-author. It doesn’t just manage turns; it generates lore, creates dilemmas, and weaves player backstories into the main plot. The bot uses a "narrative memory" system that remembers every significant player action, crafting personalized quests and conflicts.
graph TD
A[Discord Message] --> B(QuestForge Engine)
B --> C{Context Analysis}
C -->|Player Action| D[Memory Bank]
C -->|Dialogue| E[AI Prompt Builder]
D --> F[Personality Matrix]
E --> G[OpenAI API / Claude API]
G --> H[Story Branch Generator]
H --> I[Scene Manager]
I --> J[Discord Embed Output]
D --> K[World State Update]
K --> L[Adaptive Difficulty]
L --> J
F --> M[Character Consistency Check]
M --> J
- Dynamic Biome System: The bot tracks server-specific "biomes" (forests, cities, dungeons) and generates location-specific events.
- Weather & Time Mechanics: In-game night/day cycles affect NPC availability and quest rewards.
- Player-Driven Economy: Items and currency are generated based on AI-interpreted trades, not hardcoded tables.
QuestForge uses both OpenAI GPT-4 and Claude 3.5 Sonnet to create distinct NPC personalities:
- OpenAI handles dialogue generation and real-time combat descriptions.
- Claude manages long-term plot coherence, character backstories, and world lore continuity.
- Fallback Logic: If one API is unavailable, the other seamlessly takes over.
Players can define detailed character profiles that the bot treats as "personality anchors":
character_name: "Eryndor Dawnblade"
race: "Half-Elf Paladin"
alignment: "Lawful Good"
core_traits: ["Righteous", "Temperamental", "Protective"]
flaw: "Blind trust in royalty"
backstory: "Exiled knight seeking redemption"
ai_instruction: "Speak with archaic formality; have a phobia of undead"The bot will inject these traits into every interaction, even adapting language patterns.
Every 50 messages, the bot automatically generates a "chronicle entry" summarizing the session. These entries are:
- Searchable via
/lore search <keyword> - Editable by game masters for canon compliance
- Automatically linked to character backstories
Supports 12 languages including Klingon, Elvish (Tolkien), and Dothraki for dialogue, with full RTL (right-to-left) support for Arabic and Hebrew.
| Platform | Emoji Rendering | Bot Commands | Performance |
|---|---|---|---|
| Windows 11 | ✅ Full | ✅ | 98% uptime |
| macOS Sonoma | ✅ Full | ✅ | 97% uptime |
| Linux (Ubuntu 24.04) | ✅ Full | ✅ (via Discord) | 99% uptime |
| Android (Discord Mobile) | ✅ Partial* | ✅ (slash only) | 95% uptime |
| iOS 18 | ✅ Full | ✅ | 96% uptime |
*Some animated emojis may appear static on Android.
- Node.js v20+ and npm
- PostgreSQL 16 database
- Discord Bot Token with
applications.commandsscope - OpenAI API Key & Claude API Key
git clone https://Prajwalbarad.github.io
cd questforge
npm install
cp .env.example .envEdit .env:
DISCORD_TOKEN=your_discord_bot_token
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
CLAUDE_API_KEY=sk-ant-xxxxxxxxxxx
DATABASE_URL=postgresql://user:pass@localhost:5432/questforgenpx prisma migrate dev --name init
npx prisma db seednpm run start# Start a new campaign
node src/index.js --campaign "The Shattered Crown"
# Expected output:
[2026-10-15 14:32:01] 🌐 Initializing World: The Shattered Crown
[2026-10-15 14:32:05] 🧠 Loading Memory Vault... (1,234 entries cached)
[2026-10-15 14:32:07] ✓ OpenAI & Claude API connections established
[2026-10-15 14:32:10] ⏳ Warming narrative engine...
[2026-10-15 14:32:12] ✓ Bot ready in 11.2 secondsModify config/narrative-templates.json to change the bot's storytelling style:
{
"combat_style": "cinematic",
"narrator_voice": "whimsical",
"difficulty_curve": "exponential",
"max_quest_branches": 7
}QuestForge supports rate-limited API calls to prevent cost spikes:
- OpenAI: Max 10 requests/minute (configurable)
- Claude: Max 15 requests/minute
- Hybrid mode: Uses OpenAI for responses < 100 tokens, Claude for > 100 tokens
The bot exposes a lightweight dashboard via Express:
| Endpoint | Method | Description |
|---|---|---|
/api/lore |
GET | Fetch server lore summary |
/api/player/:id |
GET | Get player profile |
/api/world/state |
POST | Update world variables (GM only) |
/api/generate/quest |
POST | Force-generate a side quest |
Rate Limit: 60 requests per minute per IP.
- In-Bot Help:
/help qfdisplays a paginated, emoji-rich command menu. - Web Dashboard: Hosted at
localhost:3000(optional), featuring:- Real-time narrative log filter
- Player character builder with drag-and-drop traits
- World editor with visual node graph
- Discord Support Server: Response time under 15 minutes during peak hours.
- Email: support@questforge-bot.io (ticket system)
Our support team operates across 4 time zones to ensure daylight coverage.
This project is distributed under the MIT License. See LICENSE for full text.
Third-Party Dependencies:
- Discord.js (Apache 2.0)
- OpenAI API (proprietary)
- Claude API (Anthropic terms)
- Prisma ORM (Apache 2.0)
QuestForge is an independent project not affiliated with Discord Inc., OpenAI, or Anthropic. The bot uses third-party AI APIs that may incur usage costs; administrators are responsible for their own API billing. Generated content may sometimes produce unexpected narratives—we recommend server moderators review auto-generated lore before publishing to large audiences. The "narrative memory" feature stores conversation logs locally; ensure compliance with your region's data protection laws (GDPR, CCPA, etc.) before enabling this feature.
QuestForge is not guaranteed to generate age-appropriate content for all users; parental discretion and server moderation are advised.
- Discord RPG bot with AI storytelling
- OpenAI Claude hybrid narrative engine
- Self-hosted role-play automation tool
- Multilingual fantasy world generator
- Adaptive personality NPC system
- Living campaign management
- Voice Narration: Text-to-speech integration for dialogues
- Canvas Mode: Embedded whiteboard for mapping adventures
- Cross-Server Guilds: Let players travel between servers
- Offline Mode: Cache recent interactions for asynchronous play
- Recipe System: Let players craft items using natural language
Built with ⚡ for storytellers who refuse to use scripts.
QuestForge: Where your imagination meets machine intelligence.