A powerful and feature-rich Discord bot built with Discord.js v14, TypeScript, and Bun runtime.
Gargoyle is a versatile Discord bot with a comprehensive set of commands and features.
Feel free to invite it using this link!
Commands are built to support full feature sets, to make expanding features and addons as modular as possible, allowing (currently) slashcommands, textcommands, context commands, responses to interactions built into the file and API endpoints per command available.
- Dynamic voice channel creation and management
- Audio playback capabilities with
@discordjs/voice
- MongoDB integration for data persistence
- Canvas-based image generation
- Steam API integration
- Sharp image processing
- Custom embed, button, modal, and select menu builders
- Slash command and text command support
- Bun runtime (recommended) or Node.js
- Docker and Docker Compose (for MongoDB)
- MongoDB database
- Discord Bot Token
-
Clone the repository
git clone https://github.com/ceraia/Gargoyle.git cd Gargoyle -
Install dependencies
bun install
-
Set up environment variables
Create a
.envfile in the root directory with the following variables:DISCORD_TOKEN=your_discord_bot_token DBUSERNAME=your_mongodb_username DBPASSWORD=your_mongodb_password # Add any other required environment variables
-
Start the database
# For development with MongoDB bun run aux:on
Development mode (with auto-reload):
bun run devProduction mode:
bun run startUsing Docker (full stack):
bun run dev:on # Start all services (MongoDB + Bot)
bun run dev:off # Stop all servicesbun run start- Start the botbun run dev- Start with auto-reloadbun run dev:on- Start all Docker servicesbun run dev:off- Stop all Docker servicesbun run aux:on- Start auxiliary services (MongoDB)bun run aux:off- Stop auxiliary servicesbun run app:on- Start app servicebun run app:off- Stop app servicebun run build- Compile TypeScriptbun run format- Format code with Prettierbun run check- Format and build
Gargoyle/
├── src/
│ ├── index.ts # Entry point
│ ├── commands/ # Command categories
│ ├── events/ # Event handlers
│ └── system/ # Core bot system
│ ├── botClient.ts # Main client
│ └── backend/ # Backend utilities
│ ├── builders/ # Custom builders
│ ├── classes/ # Core classes
│ ├── database/ # Database handlers
│ ├── events/ # System events
│ ├── initializers/ # Initialization logic
│ └── tools/ # Helper tools
├── docker/ # Docker configurations
├── media/ # Assets (audio, fonts)
└── container/ # Docker volumes
The project includes Docker configurations for both development and production:
docker-compose.yml- Production configurationdocker-compose-dev.yml- Development configuration with profilesdocker/dev/Dockerfile- Development containerdocker/prod/Dockerfile- Production container
- aux - Auxiliary services (MongoDB)
- app - Application service (Bot)
- Runtime: Bun / Node.js
- Language: TypeScript
- Framework: Discord.js v14
- Database: MongoDB with Mongoose
- Image Processing: Sharp, Canvas
- Audio: @discordjs/voice, OpusScript
- Validation: Zod
- Styling: Colorette
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is licensed under the terms specified in the LICENSE file.
For security concerns, please review our SECURITY.md policy.
Project maintained by ceraia
Made with ❤️ and TypeScript