1 个不稳定发布
0.1.0 | 2021年9月5日 |
---|
#23 in #dice-roll
2KB
Tenebrous骰子机器人
此存储库托管在 Agnos.is Git 上,并镜像到 GitHub。
这是一个用于在Matrix消息平台上辅助角色扮演游戏的骰子机器人。它目前支持《黑暗编年史2E叙事系统》和《克苏鲁的呼唤》,并计划进一步扩展代码库以支持其他系统和角色表格管理。
功能
tenebrous-dicebot
是一个用于在Matrix(以及Matrix可以桥接的任何东西,如Discord)上辅助角色扮演游戏的骰子机器人。它目前具有以下功能
- 滚动任意骰子表达式(例如1d4,1d20+5,1d8+1d6等)。
- 为《黑暗编年史2E叙事系统》滚动骰子池。
- 为《克苏鲁的呼唤》系统滚动骰子。
- 在加密或未加密的Matrix房间里工作。
- 存储用户创建的变量。
支持和社区
该项目在 #tenebrous:agnos.is 有一个Matrix房间。您还可以在 GitHub Discussions 上发表帖子。
对于报告错误,我们建议您在 git.agnos.is 上打开一个问题。然而,您也可以在 GitHub 上打开一个问题。
开发和贡献
所有开发都在 git.agnos.is 上进行。如果您想贡献,请在那里打开一个拉取请求。在某些情况下,可能接受来自GitHub的拉取请求。所有贡献都必须根据 AGPL 3.0 或更高版本 许可才能被接受。
构建和安装
Docker镜像
运行骰子机器人最简单的方法是使用 官方Docker镜像。它通过CI管道在GitHub Container Registry上分发。
latest
标签始终指向最新成功构建的master提交,被认为是不可稳定的,而单个标签被认为是稳定的。
- 不稳定:
docker pull ghcr.io/projectmoon/chronicle-dicebot:latest
- 稳定:
docker pull ghcr.io/projectmoon/chronicle-dicebot:X.Y.Z
此图像基于 Void Linux。要自己构建此图像,请在存储库的根目录中运行 docker build -t chronicle-dicebot .
。
在拉取或构建图像后,请参阅 如何使用Docker图像的说明。
从crates.io安装
该项目可以从 crates.io 获得。要安装它,请执行 cargo install tenebrous-dicebot
。这将使以下可执行文件在您的系统上可用
dicebot
:主要的骰子机器人可执行文件。dicebot-cmd
:从命令行运行dicebot命令。dicebot_migrate
:独立的数据库迁移器(不是必需的)。tonic_client
:gRPC连接的测试客户端(不是必需的)。
从源代码构建
预编译的可执行文件尚不可用。克隆此存储库并运行 cargo install
。
构建项目需要
- 基本构建环境(Ubuntu上的
build-essential
,Void和Arch上的base-devel
等)。 - Rust 1.45.0或更高版本。
- 已安装OpenSSL/LibreSSL开发头文件。
olm-sys
crate依赖项:cmake,libstdc++。- glibc。
为什么它不能在musl libc上构建?
据我所知,该项目不能在musl libc上构建。它绝对不能使用rust-musl-builder构建静态二进制文件。这可能是由于Rust Matrix SDK的间接依赖项所致。
任何将项目或Matrix SDK正确构建为使用musl的静态二进制文件的PR都将非常有用。
用法
要使用它,您可以邀请机器人到任何您想要的房间,然后它会自动跳入。然后您可以简单地给出用于故事叙述系统或更传统的RPG骰子投掷的表达式。
机器人支持一个 !help
命令,用于获取有关其功能的基本帮助信息。
基本骰子投掷
命令 !roll
和 !r
可以处理任意的骰子投掷表达式。
!roll 4d6
!r 4d7 + 3
!r 3d12 - 5d2 + 3 - 7d3 + 20d20
保留/丢弃骰子
机器人支持保留投掷中最高骰子,或丢弃投掷中最高骰子。这允许机器人处理像D&D 5e优势或劣势这样的东西。
!roll 2d20k1
!r 2d20dh1 + 5
!r 10d10k5 + 10d10dh5 - 2
故事叙述系统
命令 !pool
(或!rp
)和 !chance
用于故事叙述系统,并且它们使用特定的语法来支持骰子系统。命令的最简单版本是 !pool <num>
,它使用最常用的投掷类型来投掷给定大小的池。
可以通过在数字前添加 n
、e
或 r
来控制卷的类型,分别为重复9次、重复8次和记忆品质卷。可以通过 s<num>
来控制异常成功的所需成功次数,例如 s3
只需要3次成功即可实现异常成功。所有修正值应放在数字之前,并用一个 :
冒号分隔。
示例
!pool 8 //regular pool of 8 dice
!pool n:8 //roll 8 dice, 9-again
!pool ns3:8 //roll 8 dice, 9-again with only 3 successes for exceptional
!pool rs2:5 //5 dice, rote quality, 2 successes for exceptional
克苏鲁的呼唤系统
命令 !cthRoll
、!cthroll
、!cthARoll
和 !cthadv
用于克苏鲁的呼唤系统。 !cthRoll
和 !cthroll
用于掷百分比骰子并对抗目标数字。可以在前面加上 b:
或 bb:
来获得一个或两个奖励骰子。
!cthARoll
和 !cthadv
用于技能提升。
示例
!cthRoll 50 //roll against a target of 50
!cthRoll bb:60 //roll against a target of 60 with 2 bonus dice
!cthARoll 30 //advancement roll against a target of 30
用户变量
用户可以存储变量以用于故事讲述骰子池系统。变量以每个房间、每个用户为基础存储在数据库中(如果使用Docker镜像,则位于缓存目录中)。
示例
!set myvar 5 //stores 5 for this room under the name "myvar"
!get myvar //will print 5
可以在骰子池和克苏鲁的呼唤掷骰表达式中引用变量,例如 !pool myvar
或 !pool myvar+3
或 !cthroll myvar
。克苏鲁的呼唤提升掷骰也接受变量,如果使用变量,并且掷骰成功,它将使用新的技能更新变量。
运行机器人
运行机器人的最简单方法是使用 官方Docker镜像,尽管您也可以 直接运行二进制文件。
使用官方Docker镜像的典型运行命令可能看起来像这样
# Run unstable version of the bot
VERSION="latest"
docker run --rm -d --name dicebot \
-v /path/to/dicebot-config.toml:/config/dicebot-config.toml:ro \
-v /path/to/cache/:/cache \
ghcr.io/projectmoon/chronicle-dicebot:$VERSION
Docker镜像需要两个卷挂载:配置文件的位置,应挂载在 /config/dicebot-config.toml
,以及一个缓存目录以存储数据库和客户端状态(在初始同步后)。这应该挂载在容器中的 /cache/
。
配置文件
配置文件是一个包含三个部分的TOML文件。
[matrix]
home_server = 'https://example.com'
username = 'thisismyusername'
password = 'thisismypassword'
[database]
path = '/path/to/database/directory/'
[bot]
oldest_message_age = 300
[matrix]
部分包含登录机器人矩阵账户的信息。
home_server
:机器人应登录的Matrix homeserver的URL。这应该是您在登录框中输入的正确主机名,这可能与显示给其他用户的服务器名称不同。username
:机器人账户用户名。password
:机器人账户密码。
[database]
部分包含连接到嵌入式数据库的信息。注意:如果您使用的是Docker镜像,则不需要此信息。
path
:文件系统中用作数据库存储目录的路径。
《[bot]
》部分包含控制机器人操作设置的选项。此部分是可选的,如果不存在该部分或设置,则将回退到默认值。
oldest_message_age
:消息可以忽略的最旧时间(以秒为单位)。这可以防止机器人在离线时处理不相关的旧命令。默认值是900秒(15分钟)。
直接运行二进制文件
如果您已从源代码构建了应用程序,可以通过运行dicebot /path/to/config.toml
直接调用骰子机器人,而不是使用Docker。默认情况下,用户账户缓存存储在平台相关位置。例如,如果您想在Linux上更改缓存位置,可以在调用机器人之前运行以下命令:export XDG_CACHE_HOME=/path/to/cache
。
直接安装应用程序还会安装dicebot-cmd
,这允许您在命令行上运行任意机器人命令。这不会连接到正在运行的机器人实例;它只是本地处理命令。
未来计划
最基本的计划是:
- 资源计数:创建可以上升和下降的自定义计数器。
- 可能还有一些类型的角色表集成。但是,为了实现这一点,我们需要一种表格服务。
- 在Docker镜像中使用环境变量而不是配置文件。
- 每个系统的游戏规则。
鸣谢
这最初是axfive-matrix-dicebot的分支,增加了对《黑暗Chronicles》和《克苏鲁的呼唤》的支持。
依赖关系
~5.5–7.5MB
~130K SLoC