#discord #bot #todo #ping

nightly app secubot

Yet another Discord bot!

16 stable releases

2.8.0 Nov 13, 2023
2.7.0 Sep 24, 2023
2.3.0 Mar 20, 2023
2.2.0 Feb 24, 2023
1.2.3 Oct 18, 2022

#267 in Network programming

Download history 9/week @ 2023-08-13 9/week @ 2023-08-27 40/week @ 2023-09-03 82/week @ 2023-09-10 5/week @ 2023-09-17 27/week @ 2023-09-24 3/week @ 2023-10-01 7/week @ 2023-10-15 18/week @ 2023-10-22 21/week @ 2023-10-29 32/week @ 2023-11-12 15/week @ 2023-11-19 65/week @ 2023-11-26

112 downloads per month

MIT license

1.5K SLoC


Rust CI

I'm not a programmer until I write my own Discord bot, right? And what is the best programming language to do so, if not Rust?

The bot was written at first out of the Cyber Warriors' need for ping cannon replacement, and over time I just kept adding new features.


  • The Mighty Ping Cannon - pings provided users for 10 minutes after which it times out, allows for adding and removing users while pinging
  • TODO lists - provides per-channel TODO lists backed by database, allows to specify assignee, it also posts periodical reminders about uncompleted todos
  • Bot versioning - allows for checking the latest release notes and see currently running version


Compile locally



Build the image locally with docker build . or pull ghcr.io/seqre/secubot image.

Use the following command to quickly run the bot to test it:

docker run -e SCBT__DISCORD_TOKEN="token" secubot:latest

To have local persistent SQLite database, run:

touch db.sqlite                     // we need to create file first as docker cannot mount non-existing file
docker run \
  -v ${PWD}/db.sqlite:/db.sqlite \  // mount `db.sqlite` to have persistent database
  -e SCBT__DISCORD_TOKEN="token" \  // provide Discord token
  --name secubot \

To use proper config file(s), add the following mounts:

touch db.sqlite
docker run \
  -v ${PWD}/config.yaml:/config.yaml:ro \ // mount `config.yaml` file as singular configuration file
  -v ${PWD}/config:/config:ro \           // mount whole `config/` directory if you need to have multiple configuration files
  -v ${PWD}/db.sqlite:/db.sqlite \        // mount `db.sqlite` to have persistent database
  --name secubot \

You can use any format that config-rs supports, YAML is given as an example.




~1M SLoC