A Discord bot for GitOps-based Discord server management. Manage your server's channels and categories using YAML templates, version control, and GitHub integration.
The easiest way to get started is to invite the pre-hosted GitCord bot to your Discord server:
After inviting the bot, you can start using commands immediately. See the Quick Start Guide for usage examples.
If you prefer to run your own instance of GitCord:
- Clone the repository:
git clone https://github.com/evolvewithevan/gitcord.git cd gitcord - Install dependencies (requires Python 3.9+ and uv)
uv sync
- Set up environment variables:
cp .env.example .env # Edit .env and add your Discord bot token - Run the bot:
python -m gitcord
For detailed self-hosting setup, see the Installation Guide.
GitCord is a Discord bot that lets you manage your server's structure using YAML configuration files, stored in Git and optionally synced with GitHub. It enables:
- Version-controlled server configuration
- Automated and manual sync of categories/channels
- Bulk creation of channels/categories from templates
- Easy server setup and reproducibility
- Template-based Channel & Category Creation: Use YAML files to define your server structure
- Manual & Planned Automatic Sync: Pull changes from a GitHub repo or local files
- Slash & Prefix Commands: Use
/createcategory,/createchannel,!createcategory, etc. - Permission Management: Follows Discord's permission system
- Extensible: Modular cog system for easy extension
- Open Source: GPL-3.0 License
See the full feature list.
-
Create a channel from YAML:
# general.yaml name: general type: text topic: General discussion position: 0 nsfw: false
Use:
!createchannel -
Create a category with channels:
# community.yaml name: Community type: category position: 0 channels: - general - memes - off-topic
Use:
!createcategoryor/createcategory
See Quick Start and Templates Guide.
!hello//helloβ Greet the bot!ping//slashpingβ Check bot latency!createchannelβ Create a channel from YAML!createcategory//createcategory [yaml_path]β Create a category with channels!fetchurl <url>//fetchurl <url>β Fetch text from a website (admin)!synccommands//synccommandsβ Update slash commands (admin)!help//helpβ Show help and links
See Commands Reference.
gitcord/
βββ src/gitcord/ # Main source code
β βββ bot.py # Main bot entry point
β βββ config.py # Configuration management
β βββ events.py # Discord event handlers
β βββ cogs/ # Discord.py cogs (command modules)
β βββ utils/ # Utility functions
β βββ views/ # Discord UI components
β βββ constants/ # Constants and messages
βββ gitcord-template/ # Example template repository
βββ docs/ # Documentation (mdBook)
βββ requirements.txt # Python dependencies
βββ pyproject.toml # Project metadata
βββ README.md # Project documentation
- Alpha: Core features implemented, active development
- See the Roadmap for planned features and progress
- Planned Features:
- Webhook-based automatic sync
- Advanced template features (inheritance, variables)
- More admin tools
We welcome contributions! Please read CONTRIBUTING.md for:
- Coding standards (PEP8, type hints, docstrings)
- How to set up your dev environment
- Testing and documentation guidelines
- Pull request process
This project is licensed under the GNU General Public License v3.0. See LICENSE.
Made with β€οΈ by the GitCord Team. Full Documentation