#discord-bot #discord #bot #env-var #config-file #config-toml

app fercord

使用Rust编写的Discord机器人

2个不稳定版本

0.3.0 2023年10月2日
0.2.0 2023年9月29日

#517 in 配置

GPL-3.0-or-later

52KB
1K SLoC

fercord

一个用于个人使用的Rust编写的Discord机器人。

配置

本地/直接运行时

您可以通过设置环境变量CONFIG(例如:CONFIG=$XDG_CONFIG_HOME/fercord/config.toml)来指定配置文件的路径,或者如果未指定,我们将查找当前工作目录中的.config/config.toml

示例 config.toml

discord_token = "your-bot-token"
database_url = "sqlite://fercord.db"
redis_url = "redis://127.0.0.1/"
job_interval_min = 1
shard_key = "c69b7bb6-0ca4-40da-8bad-26d9d4d2fb50"
  • discord_token:您的机器人令牌
  • database_url:数据库的URL。目前我们只支持PostgreSQL
  • redis_url:用于存储运行时配置的Redis实例的URL
  • job_interval_min:调度器在运行之间的间隔(以分钟为单位)
  • shard_key:连接到相同键值存储的每个机器人实例应该具有唯一UUID

环境变量中的配置

上面提到的每个变量都可以通过环境来覆盖。正确的环境变量前缀是"FERCORD_"。

要覆盖您的Discord令牌,请将环境变量FERCORD_DISCORD_TOKEN设置为您的令牌。通过环境变量设置的设置优先于通过配置文件设置的设置。

Docker

容器在/config/config.toml存储了内置的config.toml。在那里设置的唯一设置是job_interval_min(设置为1)。如果您想构建自己的Docker镜像,您可以在Dockerfile中设置环境变量CONFIG来覆盖fercord查找配置文件的位置。

这意味着以下环境变量必须指定,以便容器能够正常工作

  • FERCORD_DISCORD_TOKEN
  • FERCORD_DATABASE_URL
  • FERCORD_REDIS_URL
  • FERCORD_SHARD_KEY

如果您想设置不同的作业间隔,您可以通过FERCORD_JOB_INTERVAL_MIN来指定。

sqlite数据库位于/data目录中,名称为fercord.db。容器将/data作为卷公开,因此它将在更新等之间持久化。

RUST_LOG

容器中 RUST_LOG 的默认值是 info,sqlx::query=warn。您可以覆盖此值,但如果选择这样做,请复制 sqlx::query 的值。

低于此日志级别的任何日志都将输出 sqlx 运行的查询,这可能会成为安全问题。

依赖关系

~34-53MB
~1M SLoC