Skip to main content

屠龙骰(DNDDicer / nonebot-plugin-dnddicer)

专精 DND5e / DND5r 跑团的 NoneBot2 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。

当前版本:v0.3.0 · 完整使用手册见 📖 使用文档

✨ 简介

DNDDicer 的目标是填补「NoneBot 商店中缺少 DND5e/5r 专业 + 现代维护 + 插件形态 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。

  • 掷骰引擎:内置 AST 表达式引擎(Lark 文法),支持 2d20kh1、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
  • 跑团全流程:掷骰 → .dnd 属性生成 → 角色卡与检定/豁免点命令 → 自定义武器与攻击(.X攻击/.X伤害)/ HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
  • 规则范围:仅 DND5e/5r——专精 DND 定位,不做 COC/D100 体系与 .mode 模式切换;
  • 商店合规:零配置可加载、本地存储走 nonebot-plugin-localstore、元数据完整、全程异步。

📖 使用文档

详细用法、输入/输出示例与常见问题见使用文档(手册式分章,含跑团示例;在线版:https://h-elden.github.io/nonebot-plugin-dnddicer/,源文件在仓库 docs/):

📦 安装

通过 NB-CLI(推荐,与商店安装方式一致):

nb plugin install nonebot-plugin-dnddicer

或通过包管理器安装后,在 pyproject.toml 的 [tool.nonebot] 中声明加载:

pip install nonebot-plugin-dnddicer
[tool.nonebot]
plugins = ["nonebot_plugin_dnddicer"]

依赖:Python ≥ 3.11,NoneBot2 ≥ 2.4.0,OneBot V11 适配器(nb plugin install 会自动安装依赖)。

⚙️ 配置

插件零配置即可加载运行,以下配置项全部可选(在 .env / 环境变量中设置):

配置项 类型 默认值 说明
dnddicer_command_priority int 10 命令事件响应器基础优先级(越小越优先),与其他插件冲突时按需调整
dnddicer_default_face int 20 全局默认骰面(DND 惯例 D20;已配置 .dset 的群以群配置为准,此项作兜底)
dnddicer_enabled bool true 功能总开关,false 时只加载骨架、不注册命令
dnddicer_use_host_command_starts bool false 是否兼容宿主 COMMAND_START 起始符(NoneBot 默认 /,开启后 /.help 等亦可触发)。默认只匹配 . / 。,避免 /help、/bot 等常见单词命令与其他插件同时命中(冲突)

🎲 用法

命令以 .(或全角 。)开头;命令起始符默认仅 . / 。,如需用宿主斜杠 / 等起始符触发(如 /.help),请设置配置项 dnddicer_use_host_command_starts=true。群聊服务默认关闭(白名单):需群主/管理员发送 .bot on 开启本群服务;.bot off 关闭后本群不再响应命令(.bot 本身不受影响)。群聊中使用 .bot 需先 @ 本机器人;私聊不受服务开关限制,但可用命令更少——角色卡、检定、HP、先攻等仅限群聊(差异见快速开始)。

DM 代操作(@ 提及目标):多数带目标的命令支持用 @群成员 指定目标——直连该成员在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(.hp @玩家 -4d6、.hp @玩家;地精 -d4、.ri+3 @玩家、.init del @玩家、.回合 @玩家、.角色卡 @玩家、.力量豁免 @玩家、.先攻检定 @玩家 等)。详见 命令总览 - @ 提及目标。

🎲 掷骰(群聊 / 私聊)

命令 说明
.r [N#][hs][表达式] [原因] 掷骰表达式(# 连掷 1~10、h 暗骰、s 只显数值;仅 D20 有大成功/大失败播报)
.rh [表达式] [原因] 暗骰(群内提示、结果私聊)

📋 角色卡与检定(群聊)

命令 说明
.角色卡模板 / .角色卡记录 <模板> 查看示例卡 / 记录或覆盖角色卡($…$ 分段模板)
.角色卡 / .角色卡清除 / .状态 查看 / 删除角色卡 / 查看 HP 与生命骰摘要
.角色卡 @玩家 / .角色卡 角色名 查看他人整卡(任何人可查看;记录/清除仅限本人)
.状态 @玩家 查看他人的 HP 与生命骰摘要
.力量检定 / .察觉检定+1 等 属性/技能/先攻检定点命令,自动代入调整值/熟练/加值(2# 连掷、+d4 等可追加;表达式右侧可加 @玩家 代掷)
.体质豁免 / .感知豁免优势 等 豁免点命令(原名直配,优势/劣势后缀;同样支持尾部 @玩家)
.先攻检定 / .先攻检定 @玩家 掷先攻并自动写入本群先攻列表(@ 形式代不在场的玩家掷)

🗡️ 武器与攻击(群聊)

角色卡通过 $武器$ 段自定义武器/法术项:名称+命中加值,伤害表达式+类型,如 长剑+8,1d8+5挥砍;名称尾加 x 表示不可攻击检定,如 火球术x,8d6火焰。

骰娘只忠实执行、不判 AC、不自动补属性:

命令 说明
.刺剑攻击 / .刺剑命中 用卡上该武器的命中加值掷攻击检定(优势/劣势、N# 连掷、± 临时加值、@玩家 代掷;天然 20 提示重击)
.刺剑伤害 掷该武器伤害并报出类型;后缀 副手(不加任何加值)/ 重击(骰数翻倍)/ 偷袭(游荡者按等级自动附加偷袭骰)可组合,尾部可加 ± 临时加值(如升环 .火球术伤害+1d6)
.设置武器 / .删除武器 维护卡上武器(同名覆盖 / 删除,多个用 / 分隔;.设置武器 无参数列出当前武器)

详见 武器与攻击。

🎯 属性生成(群聊 / 私聊)

命令 说明
.dnd [次数] [原因] 4D6K3 掷点生成六项属性(附合计与降序,自行分配给六属性)
.dndx [次数] [原因] 4D6K3 掷点并绑定属性名(不排序,掷出即定、可直接抄入角色卡)

❤️ HP 与长休(群聊)

命令 说明
.hp [对象] 20/30 (5) 设置自己/队友/NPC HP(含临时 HP;先 .ri 名称 入先攻表后即可记录 NPC 血量)
.hp [对象] -2d6+3 等 伤害/治疗(支持掷骰表达式;伤害位置可直接写 -武器名伤害,如 -战锤重击伤害+1d4,对应发送者卡上武器项、尾部括号可指定来源代发;目标后加 抗性/易伤 后缀可减半/加倍,分号分隔多目标同发结算)
.hp @玩家 … / .hp @玩家 对 @ 的玩家角色卡结算 / 查看(.hp @玩家 -4d6、.hp @玩家;地精 -d4 与名称混写;需该玩家已建卡)
.hp / .hp list 查看自己 / 本群列表(PC + NPC)
.hp del 名称 / .hp clr 删除单个 / 清空全部 NPC 血量记录(玩家角色卡请用 .角色卡清除,玩家先攻条目用 .init del)
.npc 持久/临时 名称 NPC 血量跨战斗保持 / 恢复默认(同名 NPC 新入先攻表默认自动回满并提示)
.长休 / .长休 @玩家 长休结算(回满 HP、清临时 HP、回复一半生命骰);@ 形式代不在场的玩家收尾

⚔️ 先攻与战斗轮(群聊)

命令 说明
.ri[修正] [名称/…] 掷先攻入表(.ri20 地精 固定值、3# 批量、.先攻 别名)
.ri+3 @玩家 代不在场的玩家掷先攻:条目名取角色卡名并与该玩家绑定(重掷替换、回合提醒与 .hp 解析同步生效)
.init 查看先攻列表(del/clr/first/swap 子指令)
.init del/first/swap @玩家 子指令按玩家归属定位条目(角色卡改名后仍有效;未入表会给出提示)
.br 新建战斗轮(清空先攻表)
.回合 / .轮次 查看/跳转当前回合与轮次(.回合+2 连续推进,轮到玩家自动 @ 提醒)
.回合 @玩家 跳转到该玩家的条目(不受改名/同名歧义影响)
.ed 结束当前回合并自动推进(.结束 别名)

⚙️ 群管理(群聊)

命令 说明
.dset [表达式] 设置/查看群默认骰面(群主/管理员)
.bot [on/off] 插件信息查询 / 本群服务开关(群主/管理员,需 @)
.帮助 / .help [命令] 命令总览 / 指定命令详细用法(如 .help r)

一期范围外功能会显式提示而非静默:.r exp 期望值采样、.r a/n 特殊判定;牌堆/随机表与规则查询(T2)、法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。

📄 版本与路线

  1. ✅ v0.1.0(第一期 = T0 + T1 + 战斗轮简化版 + .bot 服务开关):掷骰引擎移植、.r/.rh、帮助、群配置(.dset)、角色卡与检定/豁免/攻击、.dnd 属性生成、HP 管理与长休(含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮——全部落地,全量测试通过;
  2. ✅ v0.2.0:HP 抗性/易伤与 AOE 掷骰完善、.dnd 原因 兼容修复、NPC/怪物血量(三层目标搜索、先攻列表与 .hp list 联动、.ri 入表自动回满、.npc 持久/临时 跨战斗保持)、.dndx 属性名绑定掷点;
  3. ✅ v0.2.1:@ 提及目标(DM 可代玩家操作 .hp/.npc/.ri/.回合 等、查看角色卡)、玩家名称显示统一回退链、.hp del/clr 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
  4. ✅ v0.2.2:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 .bot 私聊文案修正;使用文档站上线(手册式 15 页,随发版自动部署);
  5. ✅ v0.3.0:自定义武器与攻击系统($武器$ 段、.武器名攻击 / .武器名伤害、.设置武器 / .删除武器)、.hp 伤害位置武器写法(含来源括号代发);属性攻击命令退役(破坏性变更,旧卡需重录)、文档站新增《武器与攻击》页与全站同步;
  6. ⏳ 第二期 T2:牌堆/随机表、规则查询;
  7. ⏳(可选)T3 增强期:法术位管理(.ss/.cast)、死亡豁免闭环(.ds)、BUFF/临时加值表(.buff)等。

每版完整变更(新增 / 变更 / 修复 / 文档)见 CHANGELOG.md。

📦 本地开发

# uv 方式(推荐;或使用 pip 安装 .[dev])
uv sync --group dev
uv run pytest

测试基于 nonebug 做 NoneBot 加载冒烟与全命令行为回归(与 NoneFlow 商店自动加载检查同思路)。

🤝 许可与致谢

  • 本项目(业务层与工程骨架)以 MIT License 发布,见 LICENSE。
  • 掷骰引擎移植自 nonebot-dicepp(Copyright (c) 2022 pear-studio,MIT License):引擎文件头保留上游版权声明,MIT 许可全文见 LICENSE。
  • 规则查询类资料内容不随插件分发(版权归原权利方/译者),需要时由使用者自行提供。
  • 本项目与 nonebot-dicepp 无隶属关系,为独立命名的衍生/移植作品。

Release files for nonebot-plugin-dnddicer 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nonebot-plugin-dnddicer 0.3.0
File Size Uploaded
nonebot_plugin_dnddicer-0.3.0.tar.gz 405.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nonebot-plugin-dnddicer 0.3.0
File Interpreter ABI Platform
nonebot_plugin_dnddicer-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 559.9 kB

Release files / nonebot_plugin_dnddicer-0.3.0.tar.gz

Download URL nonebot_plugin_dnddicer-0.3.0.tar.gz
Size 405.6 kB
Tags Source
SHA-256 checksum
How to use checksums
63cb312848e1f33600d993ee902ab8bd4a7d0493ee0227370f553485a15ccb15
BLAKE2b-256 checksum
How to use checksums
df71a5346834b9750ef209548738014b3593e66f915e4a4464646841203bce22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / nonebot_plugin_dnddicer-0.3.0-py3-none-any.whl

Download URL nonebot_plugin_dnddicer-0.3.0-py3-none-any.whl
Size 154.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4fab63ed2d77727f0bcf849e9bdd495d458a5935b31d1db34e22e68d5668363
BLAKE2b-256 checksum
How to use checksums
76c1b3ef4d07b01a40b960cef416598deaa064a31f20674eca6fa10894705130
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page