|Oct 2, 2023
|Sep 29, 2023
#1553 in Web programming
A discord bot written in Rust, for personal use.
When running locally/directly
You can specify the location of the config file by setting the
CONFIG environment variable (i.e.:
CONFIG=$XDG_CONFIG_HOME/fercord/config.toml) or if not specified we look in
.config/config.toml in the current working directory.
discord_token = "your-bot-token"
database_url = "sqlite://fercord.db"
redis_url = "redis://localhost/"
job_interval_min = 1
shard_key = "c69b7bb6-0ca4-40da-8bad-26d9d4d2fb50"
- discord_token: Your bot token
- databse_url: the url to the database. Currently we only support postgres
- redis_url: the url to the redis instance used to store runtime configuration
- job_interval_min: the interval (in minutes) that the scheduler leaves between runs
- shard_key: a UUID that should be unique per bot instance that is connecting to the same key-value store
Configuration from environment variables
Every variable mentioned above can be overriden from the environment. The correct environment variable prefix is "FERCORD_".
To override your discord token you would set the environment variable
FERCORD_DISCORD_TOKEN to your token.
Settings set through environment variables take precendence over configuration set via a config file.
The container has a built-in
config.toml stored at
/config/config.toml. The only setting set there is job_interval_min (set to 1).
If you want to build your own docker image, you can override the location fercord looks for the config file by setting the
CONFIG environment variable in the Dockerfile.
This means the following environment variables HAVE to be specified in order for the container to be able to function:
If you want a different job interval, you can specify it through
The sqlite database is placed in the
/data directory and called
fercord.db. The container exposes
/data as a volume, so it will persist between updates etc.
The default value for
RUST_LOG in the container is
info,sqlx::query=warn. You can override this, but if you choose to, please copy the value for
Any log level lower than that will output the queries that sqlx runs, which might be a security issue.