koishi-plugin-dwrgbwiki
v2.4.1
Published
第五人格BWIKI编辑组开发,所有代码由DeepSeek V4 Flash 0731编写。支持胜率/地图/模仿者/勋章/基础数据查询、图鉴查询、wiki页面截图、藏头诗、抽卡模拟、加页手记探索、赛事数据(选手/对决)、公告变动推送、BWIKI页面更新推送、反馈系统等功能。
Maintainers
Readme
dwrgbwiki
第五人格BWIKI编辑组测试用组件,纯AI生成喵。
查询第五人格角色胜率、地图胜率、模仿者游戏数据、勋章分数线、基础数据、BWIKI图鉴、藏头诗、抽卡模拟、加页手记探索、赛事数据(选手/队伍对决),并支持网易公告变动推送,多数结果返回一张图片。
需要安装 koishi-plugin-puppeteer 用于截图。
用法
BWIKI机器人
胜率 <角色名> [赛季] [周数] [排序要素] [段位]
地图 <地图名> [赛季] [周数] [段位] [阵营]
模仿者 <角色名> [日期] [模式]
勋章 <角色名> [日期] [模式]
基础数据 <项目> [角色]
图鉴 <二级指令> <名称>
WIKI页面 <页面名>
藏头 <文字> [模式] [类型]
藏头完整 <文字> [模式] [类型]
角色 <角色名>
赛事 选手 <选手id> [-i 模式]
赛事 对决 <队伍1> <队伍2> [-i 模式]
抽卡 <类型> [卡池] [次数]
抽卡 加页探索 [难度]
抽卡资源
抽卡重置 <用户>(需权限 2 级)
反馈 <内容> [-i 编号]
BWIKI更新监控 [检查]发送 BWIKI机器人 可查看当前支持的指令列表图片;发送 胜率 等单独指令可查看对应完整帮助。
胜率(角色胜率)
示例:
| 指令 | 含义 |
| --- | --- |
| 胜率 小女孩 | 最新赛季最新周,按去平胜率 |
| 胜率 小女孩 第43赛季 第3周 使用率 | 指定赛季、周数与排序要素 |
| 胜率 小女孩 43 3 胜率 | 同上(数字写法) |
| 胜率 小女孩 S44 全赛季 禁用率 | 赛季累计数据 |
| 胜率 小女孩 巅七 B101勋章分 | 指定段位与勋章分排序 |
- 赛季、周数不填时默认使用最新赛季最新周;填写
全赛季使用赛季累计数据 - 排序要素默认
去平胜率,可选:胜率、平率、负率、使用率、禁用率、S1/S10/A11/A100/B101/B300/C301/C500 勋章分 - 段位默认
巅七,可选:七阶、六阶、五阶、四阶、三阶、二阶、一阶、全段位
地图(地图胜率)
示例:
| 指令 | 含义 |
| --- | --- |
| 地图 军工厂 | 最新赛季最新周,监管者视角 |
| 地图 红教堂 S44 3 求生者 | 指定赛季、周数与阵营 |
| 地图 月亮河公园 全赛季 全段位 | 赛季累计与全段位 |
| 地图 湖景 | 支持模糊匹配地图名 |
- 阵营默认
监管者,可选:求生者;赛季:S44 / 第44赛季;周数:第3周 / 3 - 段位默认
巅七,可选:七阶、六阶、五阶、四阶、三阶、二阶、一阶、全段位 - 显示胜率/平率/负率/去平胜率,以及对比上赛季同周的变化
模仿者(模仿者游戏数据)
示例:
| 指令 | 含义 |
| --- | --- |
| 模仿者 侦探 | 最新日期,所有模式 |
| 模仿者 药剂师 260531 12人高级场 | 指定日期与模式 |
- 日期:YYMMDD(如 260531),不填默认最新日期
- 模式:低级场、10人高级场、12人高级场、所有模式(默认)
- 显示胜率/出场率/投票正确率/被杀率,以及各模式胜率对比;角色阵营分为侦探团/模仿者/中立
勋章(角色勋章分数线)
示例:
| 指令 | 含义 |
| --- | --- |
| 勋章 小女孩 | 最新日期,勋章分数 |
| 勋章 小女孩 20250917 7日增长率 | 指定日期与模式 |
| 勋章 小女孩 赛季同比增长率 | 对比上赛季同日 |
- 日期:YYYYMMDD(如 20250917),不填默认最新日期
- 模式:勋章分数(默认)、距平百分比、1/3/7/15/30日增长率、赛季同比增长率
- 显示 S1/S10/A11/A100/B101/B300/C301/C500 八档勋章分数线
基础数据(角色基础数据排名)
示例:
| 指令 | 含义 |
| --- | --- |
| 基础数据 | 列出全部项目(与数据页标签名一致) |
| 基础数据 移动速度 | 监管者移动速度排名 |
| 基础数据 移动速度 厂长 | 移动速度排名并高亮厂长 |
| 基础数据 厂长 | 厂长全部项目数值与阵营排名 |
- 项目:即数据页的标签名(如 移动速度、摧毁木板),可只输入关键字
- 角色:如 厂长、杰克、宿伞之魂,可只输入关键字
- 排名逻辑与 WIKI/基础数据排名 页面一致:
(1)表示数值越大越优、(0)越小越优,数值相同并列名次连续,无数据不计入排名,并附距平均值百分比 - 角色卡片会注明:距离类数据(普攻距离、蓄力距离、气球刀距离)数值越大排名越高,其他数据数值越小排名越高
图鉴(BWIKI 图鉴查询)
示例:
| 指令 | 含义 |
| --- | --- |
| 图鉴 | 列出已配置的二级指令 |
| 图鉴 时装 招风旗 | 查询时装「招风旗」并生成图片卡片 |
- 数据来自第五人格 BWIKI(
wiki.biligame.com/dwrg),通过query&prop=revisions获取页面 wikitext 后按模板解析 - 二级指令、模板名(前缀匹配,可多个)、解析字段、配图文件名模板与输出宽度均可在插件配置「图鉴二级指令配置」中自定义增减;字段以表格形式通过「添加项目」新增(每行一个参数),新增时默认只填
key,label留空则显示参数名 - 配图文件名模板用
{{参数名}}占位,如{{角色}}{{品质}}品质时装_{{名称}}.png,插件会按该文件名在 wiki 上查找图片并显示在卡片左侧(找不到则不显示);参数值会自动清洗 wiki 语法([[链接]]、[[File:..]]、<br>等) - 每个二级指令可单独设置
width(输出图片宽度,0=使用默认宽度),卡片为左侧图片、右侧字段表格的版式 - 时装专属:
图鉴 时装 <名称>会额外读取/WIKI/时装稀有度/的latest_price.csv(最新价格),在卡片底部显示该时装的占有率(含数据更新日期,占有率为动态数据);当品质为「稀世」时额外显示单金价格与多金价格 - 带中文引号的角色/物品名(如
“杰克”)无需手动加引号:页面找不到时会自动补上“”重试
WIKI页面(BWIKI 页面截图)
示例:
| 指令 | 含义 |
| --- | --- |
| WIKI页面 招风旗 | 打开招风旗页面并截图发送 |
| WIKI页面 杰克 | 自动补中文引号命中 “杰克” 页面 |
- 打开
https://wiki.biligame.com/dwrg/<页面名>截图,宽度与最大高度可在配置中调整 - 每日使用次数上限写入数据库(
wiki_data表),超出后当天不可再使用
藏头
示例:
| 指令 | 含义 |
| --- | --- |
| 藏头 我爱你 | 拼音首字母模式(默认),所有类型 |
| 藏头 我爱你 谐音 | 谐音匹配模式 |
| 藏头 第五人格 谐音 时装 | 谐音 + 仅时装 |
| 藏头 我爱你 随身物品 | 首字母 + 仅随身物品 |
- 逻辑与 WIKI/图片获取/cangtou 一致:首字母按拼音首字母、谐音按同音字展开,再从时装/随身物品名中匹配对应汉字
- 中英混合文本同样支持:英文字母按单字母匹配(首字母与谐音模式均可)
- 每字有多个候选时每次随机选一个;输出为纯文字
- 数据从
dataSource/WIKI/图片获取/cangtou/拉取并内存缓存
藏头完整
| 指令 | 含义 |
| --- | --- |
| 藏头完整 我爱你 | 列出每个字对应的全部物品(图片) |
- 与「藏头」指令参数、默认模式/类型配置完全一致,仅输出为图片并列出全部候选
- 每个字最多处理 10 个字符(避免图片过长)
角色
| 指令 | 含义 |
| --- | --- |
| 角色 古董商 | 列出 分类:古董商 下全部页面标题(图片) |
- 数据来自第五人格 BWIKI 分类成员,自动处理分页,排除
模板:前缀页面
赛事 选手(选手历史赛事数据)
示例:
| 指令 | 含义 |
| --- | --- |
| 赛事 选手 tian | 查询选手 tian 的历史赛事数据 |
| 赛事 选手 hasha -i all | 合并队伍前身 + 选手多个 id |
- 数据来自赛事数据展示(
dataSource/赛事数据展示/)的 playershow 数据 - 同一张图输出监管者与求生者双阵营数据(若都有):生涯汇总(胜/平/负、四杀/被四跑、局均淘汰/得分或修机/牵制/救人/砸板、出门率、MVP)+ 各赛季明细表 + 常用角色
- 选手 id 大小写不敏感,支持
id.json中的别名映射 -i合并模式见下文「赛事合并模式」
赛事 对决(队伍直接交锋)
示例:
| 指令 | 含义 |
| --- | --- |
| 赛事 对决 TE GG | 查询 TE 与 GG 全部直接交锋记录 |
| 赛事 对决 ZETA SunSister -i all | 合并队伍前身 + 选手多 id |
- 遍历全部赛段(2020 至今,约 2700+ 场对局)筛选两队直接交锋,输出图片
- 顶部摘要:交手次数、胜负平、最后获胜/落败日期(距今天数)、最长连胜/连败
- 每个对局一条记录:赛段+阶段、日期时间、MVP、大比分(胜:平:负)、两队小分,以及小局表格(场次/地图/监管者ID/监管者角色/求生者角色/结果,加赛带用时)
- 队伍名大小写不敏感,支持
team.json中的前身合并 - 赛事数据文件较大(最大 20MB+),加载使用独立长超时(90 秒)并自动重试;若历史数据(2020-2024)未完整加载,图片顶部会显示红色警告
- 数据缓存 6 小时
赛事合并模式(-i)
| 模式 | 含义 |
| --- | --- |
| -i team | 合并队伍前身(如 Tianba/JHS/Reborn → TE),默认 |
| -i player | 合并选手多个 id(如 hash → hasha;对决中小局选手名解析为主 id) |
| -i all | 队伍前身 + 选手多 id 都合并 |
| -i none | 完全不合并 |
不传 -i 时使用插件配置 matchMerge 的默认值。
抽卡(卡池模拟)
示例:
| 指令 | 含义 |
| --- | --- |
| 抽卡 精华 | 精华卡池默认十连 |
| 抽卡 精华 S37E1 10 | 指定卡池与次数 |
| 抽卡 排位珍宝 10 | 第二个参数为纯数字时视为次数 |
| 抽卡 幸运之骰 term17 | 指定卡池编号 |
| 抽卡 幻象迷途 | 幻象迷途卡池 |
| 抽卡 加页手记 | 加页手记卡池 |
| 抽卡 加页探索 困难 | 加页手记探索玩法 |
- 卡池类型:精华、排位珍宝、幸运之骰、鉴影寻宝、幻象迷途、加页手记
- 次数:1 或 10,不填默认十连
- 每种抽卡类型每天有次数上限(配置
gachaDailyLimit,默认 2),达到上限时以纯文字提示 - 抽到的物品、资源与每日计数持久化到数据库(
gacha_data表) - 各类型默认卡池可在配置中指定(
gachaDefault*)
抽卡 加页探索(加页手记探索)
| 指令 | 含义 |
| --- | --- |
| 抽卡 加页探索 | 默认困难难度 |
| 抽卡 加页探索 简单 | 指定难度(新手/简单/普通/困难) |
- 完整复刻 explore.html 的探索模拟:事件循环、辞章掉落、怪物战斗、绅士交换、秘言箱合成、宝藏房、夜莺自动带回
- 自动装备推荐道具,输出完整探索日志图片
- 每日探索次数上限(配置
gachaDailyLimit,默认 2)
抽卡资源 / 抽卡重置
| 指令 | 含义 |
| --- | --- |
| 抽卡资源 | 查询资源量与已抽物品(图片,每行最多 10 个) |
| 抽卡重置 <用户> | 重置指定用户今日抽卡/探索次数(需权限 2 级) |
抽卡资源输出当前资源量 + 已抽到的全部物品(按稀有度排序、带数量、有图显示图)抽卡重置支持 @某人 或直接输入用户 id,仅重置今日次数、保留资源与卡池进度
反馈
| 指令 | 含义 |
| --- | --- |
| 反馈 抽卡图片显示异常 | 提交反馈并私聊推送给管理员 |
| 反馈 问题已处理 -i 12 | 管理员按编号回复反馈者 |
| 反馈 拉黑 <用户id> [原因] | 管理员拉黑用户,被拉黑者提交反馈时会收到拉黑提示 |
| 反馈 拉黑 -i <编号> [原因] | 管理员直接拉黑某条反馈的作者 |
| 反馈 解封 <用户id> | 管理员解除用户的拉黑 |
| 反馈 黑名单 | 管理员查看当前反馈黑名单列表 |
- 提交反馈后生成递增编号,回复「已收到反馈(编号 #N)」
- 管理员判定:用户 id 在配置项
feedbackAdminIds中,或 koishi 权限 ≥2。注意:koishi 新用户默认权限只有 1 级,请在插件配置feedbackAdminIds中填入你自己的用户 id(如 QQ 号),否则回复/拉黑操作会提示权限不足 - 管理员用
反馈 <回复内容> -i <编号>通过机器人私聊回复反馈者,并标记该反馈已回复 - QQ 官方机器人注意:回复/推送属于机器人主动发消息,需在 QQ 开放平台的机器人设置中开通「主动消息」能力(群主动消息/私聊主动消息),否则会提示回复失败(日志中的错误码可通过插件日志查看);若私聊受限,回复会兜底转发到配置的反馈群
- 被拉黑的用户提交反馈时会被拦截并直接告知「你已被加入反馈黑名单」(不生成记录、不推送给管理员);黑名单按「平台 + 用户 id」匹配,持久化到数据库(
feedback_data表),管理员账号(feedbackAdminIds或权限 ≥2)不能被拉黑 - 反馈记录持久化到数据库(
feedback_data表)
配置
| 配置项 | 说明 | 默认值 |
| --- | --- | --- |
| dataSource | 数据源地址,可在两个镜像站点间切换 | https://website.homeworkkun.top |
| tryAlternate | 主数据源失败时自动尝试备用数据源 | true |
| defaultPart | 默认段位(8=巅七,-127=全段位) | 8 |
| mapDefaultCamp | 地图查询默认阵营(1=监管者,2=求生者) | 1 |
| showBadge | 显示勋章分数据 | true |
| badgeDays | 勋章日增长率天数 | 7 |
| width | 图片宽度(px),其他指令未单独设置时使用该值 | 1300 |
| commandWidths | 各指令图片宽度表(表格形式,每行:指令名 + 宽度,0=使用默认宽度),可配置胜率/地图/模仿者/赛事/勋章/基础数据/抽卡/图鉴/WIKI | 空 |
| codexCommands | 图鉴二级指令配置(名称/说明/模板名/解析字段,可增减) | 预置「时装」 |
| wikiMaxHeight | WIKI页面指令截图最大高度(px) | 5000 |
| wikiDailyLimit | WIKI页面指令每日使用次数上限 | 5 |
| cangtouDefaultMode | 藏头指令默认模式 | 谐音 |
| cangtouDefaultType | 藏头指令默认物品类型 | 所有 |
| matchMerge | 赛事指令默认合并模式(team/player/all/none) | team |
| gachaDailyLimit | 抽卡/探索每日次数上限 | 2 |
| gachaDefaultJinghua | 抽卡-精华 默认卡池编号 | 空 |
| gachaDefaultPaivei | 抽卡-排位珍宝 默认卡池编号 | 空 |
| gachaDefaultXingyun | 抽卡-幸运之骰 默认卡池编号 | 空 |
| gachaDefaultJianying | 抽卡-鉴影寻宝 默认卡池编号 | 空 |
| gachaDefaultHuanxiang | 抽卡-幻象迷途 默认卡池编号 | 空 |
| gachaDefaultJiaye | 抽卡-加页手记 默认卡池编号 | 空 |
| scale | 截图倍率 | 2 |
| timeout | 网络请求超时(毫秒) | 15000 |
| wecomWebhook | 企业微信机器人 Webhook 地址,留空禁用连接状态推送 | 空 |
| wecomPlatform | 监听该平台的连接状态(如 qq),留空监听全部平台 | qq |
| wecomPushDelay | 断连宽限期(秒):断开不超过该时长不会推送,期间恢复则静默 | 60 |
| feedbackPlatform | 接收反馈的平台(如 qq),留空禁用反馈推送 | 空 |
| feedbackUserId | 接收反馈的账号 id | 空 |
| feedbackChannelId | 接收反馈的群/频道 id(优先于私聊推送) | 空 |
| feedbackAdminIds | 反馈管理账号 id 列表(可回复/拉黑/解封/查看黑名单)。koishi 新用户默认权限只有 1 级,达不到回复要求的 2 级,请在此填入你自己的用户 id;留空则仅允许 koishi 权限 ≥2 的账号 | 空 |
| noticeEnable | 启用网易公告变动监听 | false |
| noticePlatform | 公告推送的平台(如 qq),留空禁用公告推送 | qq |
| noticeTargets | 公告推送目标列表,以表格形式通过「添加项目」新增(每行一个目标:类型 channel=群/频道 或 private=私聊、目标 id),可添加多个,群/频道与私聊可同时推送 | 空 |
| noticeInterval | 公告检查间隔(分钟) | 10 |
| wikiWatchEnable | 启用 BWIKI 页面更新监听(定期检查页面更新并推送变更内容到目标群聊) | false |
| wikiWatchPlatform | BWIKI 更新推送的平台(如 qq),留空禁用推送 | qq |
| wikiWatchTargets | BWIKI 更新推送目标列表(与 noticeTargets 同构:每行一个目标,类型 channel=群/频道 或 private=私聊、目标 id),可添加多个 | 空 |
| wikiWatchInterval | BWIKI 更新检查间隔(分钟) | 10 |
| wikiWatchLimit | 每次拉取的最近变更条数(同时决定每次推送最多列出的页面变更数) | 50 |
| wikiWatchMaxChars | 单页更新内容摘要最大字符数 | 500 |
| wikiWatchNamespaces | 监听的命名空间 id 列表(主命名空间=0;留空仅监听主命名空间) | [0] |
数据源两个镜像:https://website.homeworkkun.top 与 https://web.homeworkkun.top,可直接在配置中切换。
连接状态推送
填写 wecomWebhook(企业微信群机器人的 Webhook 地址)后,插件会监听所有机器人的连接状态:当机器人断开连接(重连中/离线)时推送「连接断开」,重新上线时推送「连接恢复」。wecomPlatform 可限定只监听某个平台(如 qq),留空则监听全部平台。
wecomPushDelay 为断连宽限期(秒):断开不超过该时长不会推送,期间恢复连接则完全静默(不推送断开也不推送恢复);超过宽限期仍断连才推送。
网易公告变动推送
启用 noticeEnable 后,插件会定时(noticeInterval 分钟)检查两个网易公告地址:
- 正式服:
https://h55.update.netease.com/h55_notice_version2.txt - 共研服:
https://h55.update.netease.com/h55_notice_gongyan_version2.txt
每次内容变动(以内容哈希判断)时,通过 noticePlatform 平台的机器人推送到 noticeTargets 列表中的全部目标(每条目标可单独指定 channel 群/频道或 private 私聊,可同时推送)。推送内容为「公告标题」+ 正文摘要(去除 HTML 标签与颜色代码,截断 500 字)。首次启动只记录基线,不推送。
检查请求带浏览器 User-Agent,并在网络抖动时自动重试 3 次(间隔 1s、3s),连续失败才会记录「公告检查失败」日志(日志会附上公告地址与真实原因)。
任何成员可发送 公告(或 最新公告)查看最新完整公告:默认渲染并发送正式服完整公告图片,可加参数切换来源——公告 共研(共研服)、公告 全部(两个都发);无 puppeteer 环境时自动回退为完整文本。
变更推送优先渲染为图片(仅包含发生变化的部分):当「致诸位尊敬的访客」等引言段落没有变动时,不再将其渲染进图中,避免每次推送都带上固定引言;若引言本身有变动则会正常展示。图片渲染失败时自动回退为纯文本摘要推送。
BWIKI 页面更新推送
启用 wikiWatchEnable 后,插件会定时(wikiWatchInterval 分钟)调用第五人格 BWIKI 的 MediaWiki API(https://wiki.biligame.com/dwrg/api.php):
action=query&list=recentchanges获取最近更新的页面(默认只监听主命名空间,可配置wikiWatchNamespaces;不过滤机器人编辑)- 对每个新变更调用
action=compare拉取该次编辑的差异(纯文本 unified diff)作为「最后更新内容」;新创建的页面则拉取最新内容前段 - 编辑者的 bilibili 数字 uid 通过 bilibili 空间接口解析为真实用户名(如
2086555→ 摸鱼达人作业君),解析失败时回退显示 uid
汇总后渲染为一张图片(每轮最多 wikiWatchLimit 个页面,全部附更新内容),通过 wikiWatchPlatform 平台的机器人推送到 wikiWatchTargets 列表中的全部目标(每行一个目标,可混用 channel 群/频道与 private 私聊)。图片内容为:页面标题(新页面标 🆕)、编辑者昵称、时间、编辑摘要、大小变化、更新内容(diff 的 + 行绿、- 行红);不包含页面链接。
- 首次启动只记录基线(当前最新变更位置),不推送;之后检测到新变更才推送
- 已处理的最新变更 id 持久化到数据库(
wiki_data表),机器人重启后从上次位置继续,不会重复推送 - 渲染失败或没有 puppeteer 时自动回退为纯文本推送
- 任何成员可发送
BWIKI更新监控查看监控状态,发送BWIKI更新监控 检查立即执行一次检查(返回图片,首次检查只记录基线) - 请求带浏览器 User-Agent,遇到 BWIKI 限流(HTTP 567/429/503)自动重试,检查失败只记录日志,不影响下次轮询
图片内容
胜率
- 标题栏:赛季 · 周数 · 段位 · 排序要素
- 中央:角色头像、名称、定位/阵营、排序要素数值(含本阵营排名)、要素名
- 左侧:六项数据(去平胜率/胜率/平率/负率/使用率/禁用率)及阵营排名、对比上赛季变化值与变化排名、各段位去平胜率(距平均)
- 右侧:勋章分数(S1~C500)、赛季同比增长、日增长率、距阵营平均值
地图
- 标题栏:赛季 · 周数 · 段位 · 阵营
- 中央:地图名、地图编号
- 数据:胜率/平率/负率/去平胜率,及对比上赛季同周变化
模仿者
- 标题栏:日期 · 模式 · 阵营
- 中央:角色名、阵营
- 数据:胜率/出场率/投票正确率/被杀率,及各模式胜率对比
勋章
- 标题栏:日期 · 模式 · 阵营
- 中央:角色名
- 数据:S1~C500 八档勋章分数线,及所选模式(增长率/距平)计算值
数据均根据第五人格官方小程序数据计算。
