This is the public version of FluxBot, a Discord bot for CTF teams.
Made by FluxFingers.
- Automagically creates categories and channels for CTFs and challenges
- Manage self-assignable CTF-specific roles (
PLAYER_ROLErequired so you can vet who gets access) - Creates a HedgeDoc pad for each challenge
- Mark a challenge as solved (
/solved) — random emote reaction, channel moves to the bottom and is renamedsolved-… - Remove a finished CTF (
/delete) — wipes the category, channels and role after a confirmation prompt - (optional) CTFtime feed: polls ctftime.org every 4 minutes and posts an embed per upcoming CTF in a dedicated channel, with a 👍 "Interested" button and a 🗑️ remove-from-feed button
- English UI by default, optional German via
BOT_LANG=de
You need a HedgeDoc (v1) instance running.
Also please create a new Discord bot and invite it to your server.
- Copy
.env.exampleto.envand fill in the values docker compose up --build- Profit
Do not forget to enable Server Members Intent and Message Content Intent in the Bot section of the Discord Developer Portal.
The SQLite database (fluxbot.db) is stored under BASE_PATH (mounted to ./ctfamt-db by docker-compose.yml by default).
Set CTFTIME_FEED_CHANNEL to a Discord channel ID and the bot will keep CTFTIME_FEED_AMOUNT upcoming CTFs posted in that channel, updating every 4 minutes. Leave it unset to disable the feature entirely.
Commands are registered once on first run. To force a re-registration (for example after upgrading), start the bot once with --setup:
node dist/main.js --setupor uncomment the command: line in docker-compose.yml.
MIT
