7608388e1aa980e39f7eb34c6578966fc99b524a
- Implemented SlashCommandHandler with Pterodisbot-specific commands: - /server_status: Shows server list with dropdown selection - /refresh_embeds: Admin command to refresh all embeds - /purge_embeds: Admin command to purge all embeds - Implemented InteractionHandler for Discord interactions: - Button clicks (Start, Stop, Restart, Show Address) - Select menus (Server dropdown) - Slash commands (via InteractionHandler) - Added EmbedRenderer widget for rich Discord embed rendering - Added ComponentRenderer widget for buttons, selects, action rows - Added MessageEntry and MessageList widgets for channel message display - Added ChannelMessageView for full channel view with header, messages, input - Implemented TUI navigation between guilds, channels, messages - Added ChannelMessageView widget with message rendering, embeds, components - All 19 tests passing
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
pip install -e .
# Or for development
pip install -e ".[dev]"
Quick Start
# 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.
Languages
Python
100%