Four Discord bots — Disruption (orchestrator), Claude, ChatGPT, and Gemini — each running as their own bot. Watch them debate, generate images with DALL-E, or apply invisible watermarks to images.
curl -fsSL https://deno.land/install.sh | shAI API Keys:
-
Anthropic API Key (Claude): console.anthropic.com
-
OpenAI API Key (ChatGPT + DALL-E): platform.openai.com
-
Google AI API Key (Gemini): aistudio.google.com Discord Bot Tokens (one per AI): Create 4 bot applications in the Discord Developer Portal:
-
Disruption Bot (orchestrator - debates, images, watermarks)
-
Claude Bot
-
ChatGPT Bot
-
Gemini Bot
cp .env.example .envEdit .env:
# Discord bot tokens
DISCORD_TOKEN_DISRUPTION=...
DISCORD_TOKEN_CLAUDE=...
DISCORD_TOKEN_GPT=...
DISCORD_TOKEN_GEMINI=...
# Optional: Guild ID for instant command updates during development
DISCORD_GUILD_ID=your_server_id
# AI API keys
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_AI_API_KEY=AI...
# Firebase (for watermarking feature)
FIREBASE_SERVICE_ACCOUNT=./firebase-service-account.jsonTo use the /watermark and /detect commands, you need a Firebase project:
- Create a Firebase project at console.firebase.google.com
- Enable Firestore Database and Cloud Storage
- Create a service account with Firestore and Storage permissions
- Download the JSON key and save as
firebase-service-account.json
The watermarking backend runs on Cloud Run and processes tasks asynchronously.
For each bot in Discord Developer Portal:
Bot → Privileged Gateway Intents:
- ✅ Message Content Intent (required for debates)
OAuth2 → URL Generator:
- Scopes:
bot,applications.commands - Bot Permissions:
- Send Messages
- Read Message History
- Use Slash Commands
Use the generated URL to invite each bot to your server.
Each bot runs as a separate process:
# Run individual bots
deno task disruption # Orchestrator (debates, images, watermarks)
deno task claude
deno task gpt
deno task gemini
# Development mode (with auto-reload)
deno task dev:disruption
deno task dev:claude
deno task dev:gpt
deno task dev:geminiRun all bots in separate terminal windows/tabs, or use a process manager.
Each bot registers its own commands:
| Bot | Commands |
|---|---|
| Disruption | /debate <topic> [rounds], /imagine <prompt>, /watermark, /detect |
| Claude | /claude <prompt> |
| ChatGPT | /gpt <prompt> |
| Gemini | /gemini <prompt> |
Use /debate (on Disruption bot) to start a multi-turn conversation between all three AI bots.
/debate Is a hot dog a sandwich? 3The bots coordinate through Discord messages — each bot watches for its turn and responds automatically.
Embed invisible DFT-based watermarks that survive print-and-scan:
# Embed a hidden message
/watermark image:<file> message:"Hello World" strength:5
# Extract the hidden message (requires original)
/detect original:<file> marked:<file>Features:
- Invisible watermarks using Discrete Fourier Transform
- Survives printing, scanning, and light image editing
- Progress updates at 10% intervals during processing
- Discord users automatically linked to Firebase Auth accounts
How it works:
- User runs
/watermarkwith an image and message - Bot authenticates user (creates Firebase account if needed)
- Image uploaded to Cloud Storage, task queued in Firestore
- Backend processes task asynchronously on Cloud Run
- Progress updates posted to Discord as processing continues
- Final watermarked image posted when complete
MIT