A powerful and customizable bot to manage and organize CTF competitions on Discord.
DiscordCTFHelper is a Go bot built with disgo designed to streamline CTF (Capture The Flag) management on Discord servers. The bot integrates with CTFTime and provides essential features for tracking events, managing participants, and sharing updates.
- Event Management: Automatically fetch and display upcoming events from CTFTime.
- Participant Management: Track team members and roles within CTFs.
- Notifications: Send reminders for upcoming events and important milestones.
- Event Archive: Organize past event details for reference.
- Customizable Status: Display real-time bot activity.
- Go 1.25.5 or later
- A Discord bot token (obtainable via the Discord Developer Portal)
-
Clone this repository:
git clone https://github.com/akiidjk/DiscordCTFHelper.git cd DiscordCTFHelper -
Install dependencies:
go mod download
-
Set up your
.envfile: Create a.envfile in the root directory and include the following variables:TOKEN=<discord_token> LOG_LEVEL=info LOG_FORMAT=text LOG_SOURCE=false
-
Run the bot:
go run cmd/ctfhelper/main.go
Optional flags (dev scope):
--sync-commands: Sync slash commands to Discord.--clean-commands: Clean existing commands from Discord.
- Invite the bot to your server using the generated OAuth2 link from the Discord Developer Portal.
- A user with admin role can run the command
/initfor the bot setup. - Create a CTF with
/create.
This project is licensed under the Apache License. See the LICENSE file for details.
- Add final scraping for team stats
- Add overall report generation
- New handling of channel one channel only read width the banner show
- Flag command
- Reaction cookie and fire too each flag
- Remove command
- Creds command (command for store and show the creds of a ctf)
- Send link to ctf message when channel is created
-
/challcommand to add challenges - Migration to discordgo or disgo (not urgent)
-
/voteto vote next ctf (incomplete)
For support or questions, feel free to open an issue or contact us directly
