# APIcord Discord API Emulator for bot testing. A standalone Python CLI program that emulates the Discord API (REST + WebSocket Gateway), enabling self-contained testing of Discord bots without requiring a real Discord connection. ## Features - **REST API Server** - Implements Discord REST API endpoints needed for bot operations - **WebSocket Gateway** - Emulates Discord's Gateway for real-time events (READY, INTERACTION_CREATE, etc.) - **State Management** - In-memory state with guilds, channels, users, messages, and interactions - **Test Scenarios** - YAML-based test scenarios for automated bot testing - **CLI Interface** - Easy-to-use commands for starting, testing, and managing the emulator ## Installation ```bash pip install -e . # Or for development pip install -e ".[dev]" ``` ## Quick Start ```bash # Start emulator with a test scenario apicord start --scenario scenarios/basic_test.yaml # Run automated test against a bot apicord test --scenario scenarios/full_test.yaml --bot-path /path/to/bot # Start with custom configuration apicord start --port 8080 --guilds 2 --channels 5 ``` ## Project Structure ``` apicord/ ├── src/apicord/ │ ├── main.py # CLI entry point │ ├── config.py # Configuration management │ ├── rest/ # REST API server (aiohttp) │ ├── gateways/ # WebSocket gateway (websockets) │ ├── state/ # State management │ ├── models/ # Pydantic models for Discord objects │ └── cli/ # CLI commands ├── tests/ # Unit tests ├── scenarios/ # YAML test scenarios └── pyproject.toml ``` ## License GPL-3.0 - See LICENSE file for details.