A discord bot that provides tools for collaboration in CTFs. Inspired by fiskebot
- Create a CTF with
/ctf create <name> [ctftime_link]. When a CTFTime link is supplied, most information is automatically entered.
Whenprivateis set, team members are not automatically added to the CTF and will have to be invited with the/invitecommand. - Create categories to be used with challenges using
/category create <name> - Create channels for individual challenges with
/add <category> <name> - Set working status on a challenge using the button in the channel, with
/working set Workingor the shortcut/w /working tableto see who is working on which challenges- Mark a challenge as done with
/done [contributors] /noteto create a note that can be edited by multiple people using HedgeDoc./note modalto create a note that can be edited from within discord. Simultaneous changes will be merged together using diff-match-patch./ctf archiveto archive old ctfs/ctf exportto save all the channels of a ctf as a json file.
Use in conjunction with/ctf deleteto free up channels when reaching the 500 channel limit./ctftime teamto see your team's top 10 CTFs.
Set your team name with/psybot set key:ctftime_team value:kalmarunionen
First, you need to create a bot on https://discord.com/developers/applications.
Then invite it with the following link, replacing CLIENT_ID with your actual id:
https://discord.com/api/oauth2/authorize?client_id=CLIENT_ID&permissions=8&scope=bot%20applications.commands
Create a .env file like this:
BOT_TOKEN=token
GUILD_ID=optional_guild_id
Create the backups directory
mkdir ./backups; chown 1000:1000 ./backupsThen run docker-compose up -d
Install dependencies with pip
python3 -m pip install -r requirements.txtInstall MongoDB and set it up.
Set up BOT_TOKEN and optionally GUILD_ID environment variables.
Run the script
./bot.py