Skip to content

seqre/secubot

Folders and files

NameName
Last commit message
Last commit date
Mar 12, 2024
Jan 16, 2024
Jan 18, 2024
Jan 26, 2022
Apr 10, 2025
Apr 10, 2025
Sep 3, 2023
Feb 27, 2021
Jun 13, 2024
Sep 3, 2023
Apr 27, 2022
Jan 16, 2024
Nov 4, 2023
Jun 1, 2022

Repository files navigation

Secubot

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 a ping cannon replacement, and over time I just kept adding new features.

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
  • Hall of Fame - provides per-guild lists backed by a database designed to allow count occurrences of something by the users with a provided reason
  • Bot versioning - allows for checking the latest release notes and seeing the currently running version

Activity

Repobeats analytics image

Running

Compile locally

TODO

Docker

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 \
  secubot:latest

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 \
  secubot:latest

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

Configuration

TODO