A Discord bot that automatically scans for and redeems Idle Champions promo codes.
📖 Quick Links to Documentation:
- Full README - Main documentation & all features
- Build Instructions - How to build the software (required libraries, frameworks, dependencies)
- System Design - Architecture, actors, actions, and data flows
- API Reference - Discord commands, parameters, responses, and data structures
- Security Assessment - Threat analysis, vulnerabilities, and mitigations
- Security Contacts - Private vulnerability reporting methods
- Security Advisories - Public vulnerability disclosures and known issues
- Testing Strategy - Automated test suites run before every merge
- Contributing Guide - Guidelines for developers contributing to the project
- Status Checks - Automated checks required before merging to primary branch
- Developer Certificate of Origin - Legal authorization requirement for all contributions
- Project Governance - Project members, roles, and access to sensitive resources
- Development Guide - Setup, architecture & tech stack
- Project Structure - Directory layout & key files
- Mise Setup Guide - Tool management reference
- Podman Guide - Using Podman instead of Docker
- Dependency Management - Bun, package.json, and bun.lock strategy
- Cryptographic Signing - Release signatures & verification
- Security Policy - Reporting vulnerabilities & security contacts
- Versioning & Releases - How to create releases with SemVer
- Changelog - Version history & release notes
# 1. Install dependencies
mise run install
# 2. Configure environment
cp .env.example .env
# Edit .env with your DISCORD_TOKEN, server IDs, and generate an encryption key:
# openssl rand -hex 32 → paste result as ENCRYPTION_KEY
# 3. Start the bot
mise run devDon't have Mise? Install it first
# macOS/Linux
curl https://mise.jdx.dev/install.sh | sh
# Or with Homebrew
brew install miseDeploy the bot using the pre-built Docker image:
# 1. Copy the example compose file
cp docker-compose.example.yml docker-compose.yml
# 2. Set required environment variables
export DISCORD_TOKEN=your_bot_token_here
# Generate ENCRYPTION_KEY once and store it safely (e.g. in a .env file or secret store).
# ⚠️ Never regenerate this value for an existing database — previously saved credentials
# will become unreadable if the key changes.
export ENCRYPTION_KEY=$(openssl rand -hex 32)
# 3. Start the bot
docker-compose up -dDon't have Docker? Use Podman instead - it's a drop-in replacement with identical syntax.
See docker-compose.example.yml for all available configuration options.
Pull specific versions:
ghcr.io/bigmichi1/idlecoderedeemer:latest- Latest main branch buildghcr.io/bigmichi1/idlecoderedeemer:v1.0.0- Specific releaseghcr.io/bigmichi1/idlecoderedeemer:main-<sha>- Specific commit
- 🤖 Slash Commands -
/setup,/redeem,/catchup,/autoredeem,/inventory,/open,/blacksmith,/codes,/makepublic,/backfill,/deleteaccount,/help - 🔄 Auto Code Detection - Scans Discord messages for codes automatically
- ⏮️ Message History Backfill - Recover missed codes from message history with built-in rate limiting
- 🔁 Catch Up - Redeem all known valid codes in one command (great for new members)
- 🤖 Auto-Redeem Toggle - Enable or disable automatic code redemption per user (
/autoredeem) - 🎁 Code Redemption - Submit codes and get rewards
- 📦 Chest Management - Open chests and view loot
- ⚒️ Blacksmith - Upgrade heroes with contracts
- 📊 Inventory - View gold, rubies, equipment, and progress
- 🗑️ Account Deletion - GDPR-friendly self-service data removal (
/deleteaccount) - 💾 Secure Storage - SQLite database keeps credentials safe and local
- 👥 Multi-User - Each user manages their own account
- ⚡ Fast - Built on Bun for 3-4x performance vs Node.js
For detailed information, please see:
- Full README - All features, commands, architecture & troubleshooting
- Development Guide - Development setup, structure & debugging
- Project Structure - Complete directory layout & key files
- Mise Setup Guide - Tool management & available tasks
See LICENSE file