Dice! Master手册

前言

感谢您选择Dice!此手册将帮助您了解Dice!的基本使用和配置,如果在使用中遇到任何问题或者有任何建议,请在阅读文档后访问Dice!论坛提出你的想法。

这是Dice!于2021.11.11更新2.6.0(587)后对应的Master手册点此下载pdf)*。

用户指令请参考用户手册。更多内容可参看Dice!论坛https://forum.kokona.tech/

本手册中[DiceData]一律指代Dice!存档目录,当前版本格式为[框架根目录]/Dice[DiceQQ]

目录

更新说明(2.6.0)

更新说明(2.5.2)

更新说明(2.5.1)

更新说明(2.5.0)

QQ框架(Dice!2.5.0+)

2.5.0版本,Dice!本体由酷Q插件改为了独立于框架的dll,由作为框架插件的DiceDriver加载,具体能实现的接口视框架条件而不同。Dice!驱动器目前支持先驱、Mirai框架,计划支持小栗子。由于不同版本适配进度不同,你可能无法找到以下所有版本。Miria加载DiceDriver须使用MiraiNative插件。

选择一个框架

先驱登录设备占用电脑端,支持多开,支持扫码登录,QQ账号被腾讯制裁的概率较低。Mirai可选登录设备,不能多开,有跨平台版本,MiraiAndroid是当前不使用模拟器在手机挂载Dice的唯一选择。

框架接口差异

框架目录结构

先驱与小栗子目录先驱目录

Mirai目录Mirai目录

从2.5.0+版本升级

从低版本升级到2.5.0+

迁移骰娘存档到整合包

将对应版本的存档目录[DiceData]复制到新框架根目录下。

如为原Dice2.3.8exp10(555)及以下版本:将data/app/com.w4123.dice复制到新目录[DiceData]/com.w4123.dice的位置。data/app/com.w4123.dice

先驱框架就地升级
  1. 停止或卸载原有CQXQ插件,或在CQXQ中卸载Dice!
  2. 将Dice.Driver.XQ.dll放入Plugin文件夹
  3. 加载后启用Dice.Driver
Mirai框架升级
  1. 按照论坛中教程,使用新安装方法安装新版本Mirai
  2. 迁移Dice[DiceQQ]目录
  3. 将根目录下device.json复制到根目录下(让Mirai继续使用先前的登录信息)

管理面板

WebUI配置面板(推荐)

WebUI是全平台可用的图形化配置页面,通过Dice!初始化时运行的监听端口访问。

WebUI 基础使用

在登录成功以后,Dice!会向Master(没有Master的情况下,自己) 发送WebUI运行的端口。如图中运行在8080端口。默认情况下,WebUI运行在一个随机的未使用的端口,但你可以通过WebUIPort属性更改。

启动初始化

在本地(运行Dice的同一个设备)浏览器中输入http://127.0.0.1:端口进入WebUI 请一定要输入http://否则某些浏览器会卡死
.system gui指令也会引导打开WebUI

(MiraiNative)右键托盘图标(流泪猫猫头)->(插件菜单)Dice!->综合管理

(先驱)插件扩展->Dice.Driver(右键)->设置插件。单框架多开时请直接输入地址,避免错乱

如果你在远程访问WebUI,请确定已配置好防火墙等,并使用对应的IP地址或域名访问(而不是127.0.0.1) 端口访问WebUI

提示登录时,默认用户名为admin,密码为password,进入WebUI后可在WebUI配置栏更改密码。WebUI默认只允许本地访问,所以如果设备只有你一个人能访问(不是共享的云服务器等)不更改密码也无所谓。 主界面

可以在上面执行管理操作,应该都符合直觉。需要注意的是你可以直接点击表格修改其中内容,表格中的修改无需点击保存等,会在编辑完成后自动生效。

WebUI 配置

WebUI有三个配置项,更改配置后重启才会生效
EnableWebUI - 启用WebUI, 0为禁用, 1为启用, 默认为1
WebUIPort - WebUI端口, 0为随机, 其他为固定端口
WebUIAllowInternetAccess - 允许从非本地地址访问WebUI, 0为不允许, 1为允许, 默认为0, 也就是WebUI默认只能从本地访问。如果你使用Docker网络等,你可能需要将此项设置为1才能在Docker宿主机上访问WebUI。

WebUI 环境变量

可以通过环境变量设置WebUI配置。环境变量具有较高优先级。
DICE_WEBUI_PORT 设置端口,0为随机端口
DICE_WEBUI_PORT_USE_VARIABLE 使用另一个环境变量的值作为端口,比DICE_WEBUI_PORT有更高优先级,可用于PaaS等平台
DICE_WEBUI_ALLOW_INTERNET_ACCESS 0为不允许, 1为允许

配置远程访问

WebUI 使用 HTTP Digest验证,密码保存为Digest,理论上比较安全。然而,如果需要暴露到公网,我们仍然推荐使用nginx或apache等配置好TLS然后反向代理到Dice WebUI以确保安全。
当然,允许远程访问前请务必更改密码,不然再安全也没用。

GUI管理面板(已弃用)

任意Windows框架可对骰娘发送.system gui打开图形界面(确认进入GUI,取消进入WebUI)。请注意此页面将不会继续更新并有可能在未来版本移除,推荐使用上方提到的WebUI进行设置修改。

可在界面内设置Master、调整用户信任、修改CustomMsg文本、修改全局配置

图形界面2

Master模式

Master是骰娘的控制者,每个骰娘同时至多只能有一个Master。Master可以控制骰娘的发言和行为,并个性化大量配置。受信任用户也可以获得对骰娘的部分权限,但只有Master拥有发放和回收高级权限的权限。

Master功能初始默认关闭,现在你可以在管理面板完成认主。Android版及Linux版MiraiDice由于无法调出管理面板,需要在Mirai命令行发送npm menu <ID> eventMasterMode(无其他插件时ID一般为0,指令即为npm menu 0 eventMasterMode)。

Master绑定/解绑

Master模式初次开启后为无主状态,此时对骰娘.master (private/public) 将绑定身份。也可直接在管理面板设置Master。认主时将自动开启全类型通知窗口,建议将部分通知特别是通知窗口0转移到专门的小群
.master (private) 默认私骰作成,将自动开启私用模式 .master public 公骰作成,将骰娘初始化为公骰,自动调整相应的配置 .master delete 解除绑定,骰娘此时会重回无主状态,清空通知窗口,但先前设定的配置不会初始化。 .master reset [新masterQQ] 解除绑定,骰娘此时会认主[新masterQQ](原Master保留信任级别) .master admin添加管理时自动将私聊添加为监视窗口,管理可以用.admin delete放弃权限,清除窗口可以私聊.admin notice - me

控制台指令

状态查看

.admin state 可以查看当前的全局设置和黑白名单情况

遥控开关

消息发送(.send)

send用于用户与管理员间的远程交流 .send 待发送消息 (任何人可用)向Master发送消息 .send [窗口] [待发送消息] //向指定窗口发送消息(权限4限定;权限5用户发送的消息不会标明转发来源,等效于骰娘亲自说话 )

窗口是指QQ收发消息的聊天窗口。窗口参数识别一下6种格式:

link用于管理员与特定窗口保持交流(尤其是新加入、待审核的群),或者操纵骰娘跑团 .link to/from/with [窗口] 当前窗口向目标窗口单向转发/单向接收/双向转发消息 .link close 关闭从当前聊天窗口发起的消息转发 .link start 开启上次建立的链接 对象窗口为群/讨论组时,可省略group/discuss,直接输入群号;对象为私聊时,qq可简写为q 转发自Master的消息不会标明转发来源,等效于骰娘亲自说话 无法确认目标聊天窗口是否存在,可能会导致没有反应

系统指令(.system)

.system save //立即存储所有数据(相当于执行所有停用应用时的操作) .system load //立即读取外置文件(模块、牌堆和角色卡模板)。便于不重载应用的反复调试。save/load涉及的文件见附录。 .system state //显示插件运行时间及内存占用等硬件信息 .system rexplorer //杀死资源管理器后重启。当 Windows 服务器内存占用逐渐随时间而升高时,考虑由资源管理器逐渐占用内存导致,可能适用该指令。权限5可用

一键清群(.master groupclr)

遍历群列表并退出符合条件的群,也可以在应用菜单中【一键清退】。部分框架群列表上限500,请避免群数超过500。单次清群上限受GroupClearLimit调节(默认一次至多退20个群)。 .master groupclr 可以实现一键退群,无参数时默认参数为unpower .master groupclr [天数] 将退出当前所有骰娘在指定天数内未发言的群 .master groupclr unpower 将退出当前所有骰娘不是群管/群主的群 .master groupclr preserve 将退出当前所有无许可使用的群 .master groupclr black 将退出当前所有黑名单群有危险的黑名单用户的群

全局配置

配置项目表见附录 .admin [关键词] //查看配置项状态,如.admin Private .admin [关键词]=[数值] //修改配置项。一般的开关项1表示开启,0表示关闭

通知窗口

运行过程中产生的提醒、警告等通知消息会分类型发送给设置的通知窗口。所有通知被分为0-9共十个等级,其中0-5会被骰娘用于内置广播,6-9用于自定义(具体通知类型见附录)。当产生通知时,会向通知窗口中所有接收该类型通知的窗口发送消息。如果没有窗口能发送消息,骰娘会将通知发送给自己;无论如何所有通知会自动保存在"[DiceData]\audit"中,请定期整理该文件夹。 由于通知窗口0会产生较多日志型消息,建议将通知窗口0转移到专门的小群
.admin notice [窗口] +/-[通知类型](...+/-[通知类型]) //增减通知窗口类型 .admin notice - [窗口] //直接移除指定窗口。 .send notice [通知类型] [通知文本] //向指定类型窗口广播通知

例: .admin notice group 754494359 -0-1-2-3-4+5 变更通知类型的接收情况 .admin notice - this 直接移除当前通知窗口

全局开关(.admin DisabledGlobal=0/1)

DisabledGlobal=1等价于.admin off(全局关闭)。开启时一切如常,关闭则进入静默状态,所有群聊/讨论组会相当于.bot off状态而无视群内设置,私聊会回复关闭中的信息。也可以用.admin on/off 操作全局开启/关闭,也可以在应用菜单中点击"全局开关"自动切换。

定时点事件(.admin clock)

.admin clock +/- [任务名] [时]:[分] 添加/移除 定时任务 内置定时任务:on-全局开启;off-全局关闭;clear-黑名单清群 允许调用自定义任务,参考plugin手册 每日执行,如果当日错过不会补回。 定时开启和定时关闭时会向窗口4发送通知文本 清群为基于黑名单清群(=.master groupclr black)

定时长事件

以下事件会在Dice!每运行固定时间后执行一次 .admin AutoSaveInterval=5 //定时保存用户数据(min),默认每5分钟保存一次 .admin AutoRemake=0 //定时重启(h),默认关闭。 定时系统监测报警(.admin SystemAlarmRAM/SystemAlarmCPU/SystemAlarmDisk=90) :每半小时监测一次系统内存、CPU、硬盘占用(%),超过阈值即报警。报警状态下每5分钟监测一次,如果数值升高超过1个百分点则继续报警,低于阈值则会提醒解除报警。设置在1-99时生效。

用户策略

用户记录(.user)

用户在使用指令或被授予信任后会生成用户记录 .user state //查看自己用户记录 .user trust [用户qq] //查看用户信任级别(4以上限定,上级对下级屏蔽) .user trust [用户qq] [信任级别] //调整用户信任级别(4以上限定,只能调整下级用户,最高为255) .user diss [用户qq] //最轻的拉黑用户(type=local,danger=1)

用户授信(.user trust)

每名登记用户会标记信任级别,初始为0。级别越高享受的权限越多,上级包含下级的所有权限。

.admin whiteqq (-) [白名单QQ] 可以为用户授予信任1(带减号为收回信任)

信任级别权限
1(原用户白名单)为群分发使用许可,允许使用某些指令
2黑名单豁免
3响应退群指令,接受不良记录共享(warning)
4(原管理)查看、分发和收回低于4的用户权限,原管理权限
5及以上查看、分发和收回低于自身的用户权限,系统操作指令

过期数据自动清理(.admin InactiveUserLine/InactiveGroupLine=360)

最后活跃天数超过InactiveUserLine的用户,其记录及角色卡会在清理用户时被清除;最后活跃天数超过InactiveGroupLine的群,其记录及开团信息会在清群时被清除。(配置项为0时不生效)

清理过期数据会在定时任务clear中自动执行,在执行清群时也会在退群的同时检测目标群是否会被清理。

监听好友申请(.admin ListenFriendRequest=1)

默认开启,仅好友验证方式为【需要验证信息】或【需要回答问题并由我确认】时有效,拦截消息并决定通过或拒绝。黑名单用户必定拒绝。同意好友邀请时将发送strAddFriend,特别地,通过受信任用户的好友时会发送strAddFriendWhiteQQ。当好友验证方式为【允许任何人】或【需要正确回答问题】时,通过开启ListenFriendAdd,也会向通过的好友发送strAddFriend,注意这种方式通过的好友可能仅为单向好友。

允许陌生好友邀请(.admin AllowStranger=0/1/2)

默认为1。决定是否接受陌生人的好友邀请:2-无条件接受;1-无用户记录不接受;0-无信任不接受。该项设定建议配合QQ自带的【允许陌生人邀请我加入群聊】选项。

单群设置(.group)

.group ([群号])+/-[词条] //修改单群设置,群内原地使用可省略群号

词条作用修改要求
许可使用私用模式/审核模式可正常邀请入群/群内使用信任1
未审核审核模式下标记新加入无【许可使用】的群,拒绝指令信任1
免清清群时和搜查黑名单时略过该群信任2
免黑发生在该群的不良记录无效;不搜查黑名单信任4
忽略不接受任何该群的事件信任4
协议无效不接受任何该群的事件信任3
停用指令停止响应指令和'.'开头的回复(即.bot off)信任或群管
禁用回复停止响应自定义回复信任或群管
拦截消息拦截消息,阻止低优先级插件响应信任或群管
禁用jrrp/禁用me/禁用ob
/禁用draw/禁用help
禁用对应指令信任或群管
授权许可(!authorize)

受信任用户可通过在群内发送!authorize或在任意窗口发送!authorize +[群号]来为目标群添加【许可使用】。非信任用户也可在群内使用!authorize [理由]向窗口2发送许可申请。 !authorize (+[群号]) //受信任用户为本群+许可使用 !authorize (+[群号]) [理由] //非信任用户申请本群许可

批量群处理(.groups)

取群列表.groups list(管理限定) .groups list idle //按闲置天数降序列出群 .groups list size //按群规模降序列出群 .groups list [群管词条] //列出带有词条的群

监听群邀请(.admin ListenGroupRequest=1)

默认开启。接收用户的群邀请(小群邀请将由QQ系统自动通过,因此骰娘无法处理或知晓邀请人),拒绝来自黑名单的邀请,邀请来自受信任用户时通过且自动为群添加【许可使用】,非信任用户时私用模式而定。通过邀请的同时标记邀请人。如果回执为【已同意】却实际并未入群,考虑接口出错或腾讯屏蔽。

入群检测(.admin ListenGroupAdd=1)

默认开启。入群时反馈群信息(群名、群号、群人数、邀请人),遍历群员,获取群主信息(临时创建的群可能无法获取群管理信息)、检索黑名单,为私用模式二次确认【许可使用】,为审核模式检查【许可使用】;群内发现黑名单时会通知,有管理员是黑名单时会触发退群(群未设置【免清】或【免黑】时)。发送strAddGroup。

私用模式(.admin Private=1)

认主时私骰作成进入私用模式,仅在受信任用户或【许可使用】群邀请时接受邀请,在新加入管理员无信任用户(否则为群自动添加【许可使用】)且无【许可使用】的群时自动退出,退出时自动留言。也可以用.admin only/public 切换私用/公用状态。

审核模式(.admin CheckGroupLicense=0/1/2)

入群后,对于无【许可使用】的群,将自动标记【未审核】并发送strAddGroupNoLicense。该项生效时将拒绝提供除help之外的其他服务,其余指令仅authorize/dismiss/bot有效。该项为1时拒绝所有【未审核】的群(不溯及审核模式开启前已加入的群),该项为2时拒绝所有无【许可使用】的群(含开启前已加入的群)。 审核模式与私用模式的差别

自动退出讨论组(.admin LeaveDiscuss=1)

开启LeaveDiscuss后,只要讨论组有人发言,就会自动退出讨论组。但开启后始终无人发言的讨论组无法处理,只能手动处理。讨论组具有许多不适应QQ框架的机制,如无法获取讨论组列表,无法获取邀请信息,无法获取成员列表,无法自动检测被踢。

黑名单(.admin blackqq/blackgroup)

任何情况下,来自黑名单的邀请不会被通过,指令除了dismiss都不会被响应 .admin blackgroup (-) ([黑名单理由]) [黑名单群号] 可以添加群黑名单(带减号是删除) .admin blackqq (-) ([黑名单理由]) [黑名单QQ] 可以添加用户黑名单(带减号是删除),带理由时危险等级为2且通知对方,否则危险等级为1。 .admin blackfriend //查看好友列表内的黑名单用户 危险的黑名单用户包括群内权限更高的用户或非免清群内相同权限用户(可选),同时危险等级需要达到2。危险等级只有1的黑名单用户不通知、不会触发退群。 现在自己、Master、信任2以上用户都不会新加入黑名单。

不良行为检测(.admin ListenGroupKick/ListenGroupBan/ListenSpam=1)

默认开启。分别开启后,移出、禁言、刷屏会被加入黑名单。生成危险等级2的不良记录后,会自动向通知5窗口广播生成的!warning指令。warning指令:接收到信任3或记录可识别的骰娘warning时,骰娘将自动录入黑名单。骰娘通过这一机制实现不良记录的传递共享。 拉黑群时会自动移除【许可使用】。 刷屏在程序内定义为发送指令超过20/30s,实际解释权归Master所有

邀请人连带(.admin KickedBanInviter/BannedBanInviter=1)

默认开启。被移出/禁言时将入群邀请者同时加入黑名单。 邀请者责任源于协议中不得擅自拉群的规定,这里的擅自是双向的:一边无视骰娘协议,一边无视群内意愿

云操作(.cloud)

查看更新(.cloud update)

远程获取Dice!exp正式版及开发版信息 .cloud update //检查版本更新 .cloud update release //下载最新发布版 .cloud update dev //下载最新开发版(使用测试版/开发版请保持与开发者的交流)

同步不良记录(.cloud black)

该指令会从后台获取经核验的不良记录,并更新本地黑名单库。骰娘不会自动同步云端记录。

不良记录

不良记录上传(.admin CloudBlackShare=1)

该选项默认开启。开启时,当骰娘原生生成Kick/Ban/Spam记录时,会同时向后台发送该记录。记录在后台收录后处于待核验状态,需要后台管理二次核验才会对其他骰娘生效。所有云记录有唯一的wid。上传可能因连接后台失败而失败。对于生成记录过于频繁,或不良记录源于非Dice!原因与用户产生不良互动的,后台会拒绝收录该骰娘的记录。

同步云不良记录同步失败”的处理方式:手动访问url指向的网页,本地另存为后,参考下文【读取外源记录文件】的方式手动读取。

该选项开启时,其他QQ发送云端已核验的记录也会对该骰娘生效。

读取外源记录文件

将其他来源的不良记录BlackList.json重命名为BlackListEx.json,放置于[DiceData]/conf目录下。Dice!加载时会自动读取并更新记录,之后该文件会被销毁。两种情况下已有记录不会在读取时更新:DiceMaid就是自己;危险等级与本地记录不同。

云记录注销

当前记录核销在群(754494359)内完成,入群后可使用以下指令:

可私聊司令塔BotShiki(Pope)(530136753)(具体角色可能会有变动)进行上述操作。也可请求管理来完成注销,最通用证明材料为:当事人对当事骰娘发送.admin isban [本人QQ],连同骰娘回复将聊天记录转发给管理。

用户自行解黑

云记录核销之后,所有骰娘并不会自动同步。遇到尚未注销黑名单的骰娘,请用户自行解黑。方法为对已注销的骰娘发送.admin isban [QQ],将得到的warning指令保存,用于私聊未注销的骰娘。由于骰娘存在连接后台失败的可能,导致无法获取记录更新的信息,因此无法保证指令有效。这时请联系相应骰主。

其他机制

框架消息富文本转义(CQ码)

DiceDriver会将不同框架下接收的QQ富文本消息(图片、语音等)转换为统一的CQ码

[CQ:image,file=xxx.abc] 将本地[框架根目录]/data/image/xxx.abc位置的图片上传并在消息中发送

[CQ:image,id=xxx]接收消息中的图片,id与服务器缓存图片对应,但区分群聊图片与私聊图片。群聊调用私聊消息的图片id将无法正常发送图片,反之同理。

[CQ:record,file=xxx.silk]将本地[框架根目录]/data/record/xxx.silk位置的语音上传并覆盖整条消息内容发送

[CQ:face,id=xxx] 发送对应id的QQ黄豆表情

[CQ:emoji,id=xxx] 发送对应十进制编码的Unicode字符

消息发送间隔(.admin SendIntervalIdle=500)

一般地,Dice!的待发送QQ消息不会立即发送,而是进入发送队列排队发送,并在每次发送后等待固定时间,即发送间隔(ms)。

特别地,Dice!识别一条待发送消息中的分页符('\f'),并沿分页符将消息拆成多条,依序送入消息发送队列。分页符无法在指令输入时直接录入,可以输入{FormFeed}作为消息分段,调用时会自动转义。

本系骰识别

Dice2.5.0+可以通过调用后台接口以识别目标QQ是否在Dice!云端有登记信息。新入群遍历群成员时将统计可识别本系骰数量。由于禁言反制和踢出反制是Dice!的默认协议,让Dice!骰去禁言/踢出另一只Dice!骰无疑是愚蠢的,因此在执行group ban/kick前会先查询目标是否为Dice!骰,是则不会进行实际操作。基于骰主所拥有的隐私权,云端不可见(CloudVisible=0)的Dice!骰不会被识别。

个性化

自定义文本转义

回复文本中可以通过特定的{}标记转义文本,注意花括号目前不能嵌套。

指令回复中对用户(消息来源QQ)的通用转义如下:

部分转义方法:

扩展指令

扩展脚本可放入[DiceData]/plugin/读取。文件样例见附录,更多内容请参阅脚本手册。默认可使用.help扩展指令 查询载入的指令。

自定义帮助词条(.helpdoc)

.helpdoc [词条名] [词条内容] —— 自定义帮助词条 词条内容以&开头表示重定向,如.helpdoc 追仙子 &追仙后,.help追仙子 将重定向到追仙的词条 词条名不需要是源代码中已有的,请随意添加

外置帮助文档可放入[DiceData]/mod/读取。文件样例见附录。

特别地,部分词条会存在引用的情况,自定义时可以只自定义被引用的词条。

自定义回复(.reply)

未视为指令而响应的消息,将按完全匹配->模糊匹配->正则匹配的顺序检测触发词。触发回复也会算入刷屏计数!

.reply show [触发词] 查看指定回复
.reply del [触发词] 清除触发词 .reply list 列出全部触发词

默认可使用.help回复列表 查询触发词,帮助文档对所有人可见,建议手动修饰。

自定义回执文本(.str)

将系统处理事件的回执替换为自定义文本 .[键值] [文本] ——自定义骰娘的某类回执 .[键值] NULL ——自定义文本为空白 .[键值] show ——查看自定义文本

如果没有设置,strSelfName和strSelfCall将预设为QQ昵称,并且{self}会自动替换为strSelfCall,前者用于自我展示,后者用于自称。强烈建议自定义strHlpMsg和strAddFriend、strAddGroup,向不熟悉的用户介绍私骰的特别之处(申请、使用须知)。

例:

自定义敏感词库(.admin censor)

敏感词设置.admin censor .admin censor +([触发等级])=\[敏感词0](|[敏感词1]...) //添加敏感词 .admin censor -\[敏感词0](|[敏感词1]...) //移除敏感词 例:.admin censor +=nmsl //将“nmsl”设置为Warning级 .admin censor +Danger=nn老公|nn主人 //将“nn老公”、“nn主人”设置为Danger级 .admin censor -手枪 //移除敏感词“手枪”

匹配机制

骰娘会模糊匹配指令标识符(.)开头的消息,并返回所含敏感词的最高触发等级 匹配过程自动跳过文本中的特殊符号和空格,且大小写不敏感 受信任用户会相应降低触发等级,信任4以上用户将不触发检测

触发等级

使用指令设置Ignore等级可以临时屏蔽词库中不该生效的词,对外置词库这一等级是无意义的 Ignore //无视 Notice //仅在0级窗口通知 Caution //提醒用户,并在1级窗口提醒 Warning //【默认等级】警告用户,并在1级窗口提醒 Danger //警告用户且拒绝指令,并在3级窗口警告 *请避免为纯字母/数字的敏感词设置较高触发等级,这些字符存在误匹配图片码的可能性

词库批量加载

load会读取存档目录中/conf/censor下所有文本文件 字符编码默认按GBK读取,若字符为UTF8,可在开头先起一行"#UTF8" 一词一行 触发等级默认为Warning,读取到"#[触发等级]"时,后续录入的词调整为响应等级,如"#Danger"

词库文件示例 以下内容表示以utf-8编码,读取4个敏感词 "nmsl":Warning,"nn老公":Danger,"nn主人":Danger,"sb":Notice

外置牌堆

将牌堆文件放入[DiceData]/PublicDeck内并重启或load,即可使用牌堆内的条目。牌堆名以'_'开头时,无法直接使用draw命令抽取。

支持作者

溯洄正在为后续的开发计划众筹:https://afdian.net/@suhuiw4123

也欢迎在爱发电支持Shiki:https://afdian.net/@dice_shiki

也可以微信赞赏Shiki:

常见问题

登录失败

账号屏蔽

账号被QQ屏蔽最常见的特征有:群聊消息无法成功发送,但私聊消息可以;长文本消息无法成功发送,但短文本可以。

验证是否被屏蔽最直接的方式为查看框架日志,如有发送消息的记录但实际并没有,则可以断定被屏蔽。除此之外的快捷检测方式为在群内发送暗骰指令.rh,如果私聊能正常收到结果但群聊无回执,则高概率为被屏蔽。

当账号被屏蔽时,建议暂停工作,避免带病上班,同时将账号作为正常QQ使用(养号)。

网络连接失败

附录

默认回执文本

图形界面可以查看到全部回执文本及部分用法的注释。

配置项目表

注:Disabled是不可用的意思!

关键词默认状态说明
DisabledGlobal0全局静默,只响应dismiss和bot,私聊会说明
DisabledBlock0bot off时拦截消息,阻止低优先级插件响应
DisabledListenAt1停用指令时可以通过at指名响应指令
DisabledMe0拒绝响应.me
DisabledJrrp0拒绝响应.jrrp
DisabledDeck1拒绝响应.deck
DisabledDraw0拒绝响应.draw
DisabledSend0拒绝响应.send
Private0私用模式开启(私骰作成=1)
CheckGroupLicense0审核模式,入群后检查许可使用
LeaveDiscuss0检测到讨论组发言时自动退出
ListenGroupRequest1响应群添加请求
ListenGroupAdd1响应入群反馈
ListenFriendRequest1响应好友添加请求
ListenFriendAdd1响应好友添加反馈(由插件通过则不重复)
AllowStranger10=仅允许白名单;0=允许有记录用户申请;2-允许非黑名单申请
ListenGroupKick1响应群移出事件
ListenGroupBan1响应群禁言事件
ListenSpam1响应刷屏监测
LeaveBlackQQ0检测群权限相同的黑名单用户时自动退出(公骰作成=1)
BannedBanInviter0被禁言后拉黑邀请者(公骰作成=1)
KickedBanInviter0被踢后拉黑邀请者(公骰作成=1)
GroupInvalidSize500默认协议无效群规模
GroupClearLimit20默认协议无效群规模
CloudBlackShare1与云不良记录同步
BelieveDiceList0信任来自骰娘列表成员的warning(公骰作成=1)
CloudVisible1允许通过骰娘网络公开骰娘的QQ和其他信息
SystemAlarmCPU90系统CPU占用触发报警的百分比阈值(0则不检测)
SystemAlarmRAM90系统内存占用触发报警的百分比阈值(0则不检测)
SystemAlarmDisk90系统硬盘占用触发报警的百分比阈值(0则不检测)
SendIntervalIdle500闲时消息队列处理一条消息发送的间隔(ms)
SendIntervalBusy100忙时消息队列处理一条消息发送的间隔(ms)
AutoSaveInterval5自动保存事件间隔(min)
AutoClearImage0自动图片清理间隔(h)
AutoFrameRemake0自动重启框架间隔(h)
InactiveUserLine360用户不活跃天数上限(Day) (0则不生效)
InactiveGroupLine360群不活跃天数上限(Day)(0则不生效)
ListenGroupEcho0开启群内消息自我接收
ListenSelfEcho0开启私聊消息自我接收

指令禁用对信任4以上用户无效 如果使用了容易刷屏又没有独立开关的回复插件,建议开启DisabledBlock并令Dice拥有更高优先级 对.me特别处理的理由是其在跑团中几乎零作用,却可以制造骰娘自己说话的假象,引发风险。

通知类型表

事件554输出通知类型
启动初始化发送recorder0
自定义回执文本发送recorder0
接收响应的warning发送recorder0
非黑受邀入群发送recorder0
非黑好友申请发送recorder0
刷屏初次提醒发送recorder0
解除禁言提醒发送admin1
增减黑名单发送recorder1
接收warning处理反馈发送admin1
申请/入群检测到黑名单发送admin1
黑名单触发退群发送admin1
接收陌生warning发送admin1
自定义全局设置发送recorder1
信任等级变动发送admin1
遥控单群退群/群设置1
撤销管理员发送admin2
批量修改群设置2
接收send信息发送admin2
群聊清查发送recorder2
刷屏二次提醒发送admin3
原生不良记录发送monitor3
系统负载报警3
切换公用/私用(only)发送admin4
定时开关发送monitor4
生成warning发送monitor5

文件位置表

文件路径说明读写时机
[DiceData]/conf/Console.xmlMaster模式配置修改时写入
[DiceData]/conf/NoticeList.txt通知窗口列表修改时写入
[DiceData]/conf/CustomMsg.json自定义回执文本修改时写入
[DiceData]/conf/CustomHelp.json自定义帮助文本修改时写入
[DiceData]/conf/CustomReply.json自定义回复文本修改时写入
[DiceData]/conf/BlackList.json黑名单记录修改时写入
[DiceData]/conf/CustomCensor.json自定义敏感词库更新时写入
[DiceData]/conf/censor/外置敏感词库load时读取,不写入
[DiceData]/user/UserList.txt用户信任、时间记录退出或save时写入
[DiceData]/user/UserConf.RDconf用户配置退出或save时写入
[DiceData]/user/ChatList.txt群聊时间记录、邀请人退出或save时写入
[DiceData]/user/ChatConf.RDconf群聊配置退出或save时写入
[DiceData]/user/PlayerCards.RDconf角色卡记录退出或save时写入
[DiceData]/user/session/团内记录(先攻、ob)修改时写入
[DiceData]/audit/消息通知日志更新时写入
[DiceData]/mod/模块文件(目前限定帮助文档)load时读取,不写入
[DiceData]/plugin/脚本文件(目前限定指令)load时读取函数名,调用时读取
[DiceData]/PublicDeck/外置牌堆load时读取,不写入
[DiceData]/CardTemp/角色卡模板load时读取,不写入

Mod文件示例

 

更新历史

更新说明(2.4.1)

更新说明(2.4.0)

更新说明(2.3.8exp)

2.3.8Exp10:增设用户和群记录,将白名单转换为用户信任/群选项,自定义优化如有自定义strNameGenerator请参照格式及时重定义,以免无法显示 2.3.8Exp9:拦截消息设置。多轮检定将调用一组额外的strSuccess文本以避免糟糕的排版,如有需要请额外设置 2.3.8Exp8:新增warning,完善黑名单,开放设置功能 2.3.8Exp7:新增Admin、monitor,所有admin指令对master而言都可以用.master代替。为.en/.sc未输入属性值时分别设定了独立回执 2.3.8.6i:拆分.send两个发送方向的回执,自定义化掷骰检定的回执 2.3.8.5i:增加.send功能 2.3.8.2i:允许定时开关,设定了非master使用专属指令时的回复文本,设置strDismiss后将会在被.dismiss时回复 2.3.8.1i:设定了默认入群介绍

后记

更新手记(2021.2.20)

溯洄又跑路了,结果2.5.0还没发布就又回来了。原本这一次跑路的影响比以往任何一次都要大,因为溯洄为先驱写了CQXQ,为MiraiNative更新了1.8.6,为手机模拟器更新了ExaGear,而以上项目,我 全 不 会。所以感谢风荷帮我搞定了Dice驱动器先驱插件的部分。我和溯洄都是主见极强的人,但我想我们都还在成长。

在酷Q时代,把一个插件拆成两个文件看起来很蠢,因为大大降低了安装和更新的便利性,提高了新人门槛。但现在无所谓了——无论CQXQ+Dice!还是MiraiNative+Dice!,转换插件已然不可避免。因此我有了DiceDriver+Dice!的想法,也顺便解决一个问题——心跳报告和不良记录上传的源码对所有人暴露导致的安全风险,现在这部分内容已经转移到DiceDriver中了。但是很可惜Mirai用户将不能不使用MiraiNative+DiceDriver+Dice!的配置,DiceDriver在这里只能充当酷Q插件转接Dice!。因为当我有这想法的时候,我甚至得从写mirai插件要用什么IDE开始问溯洄。

Dice!的第四个框架,我最终还是倾向于小栗子——它有设置头衔的api(不是)。

更新手记(2020.10.2)

2.4.1的阶段并没有像之前一样想着憋大招,一边适配先驱插件,一边加了些小功能。顺便也是在给自己的瓶颈拖时间,但是并没有什么实质性进展。

大概描述一下遇到的一些瓶颈:

pc卡格式的优化,现在的卡和卡模板稍显繁琐,但还是不方便录入文本值。需要敲定不同类型属性的存储格式后,才能做与云端的上传下载。

为更丰富的参数安排保留字符,如检定时临时调用指定pc的属性(.rc [pc1]/[skill1]),连接符号最好跨越中英文全半角,而塔骰使用的减号在Dice!中已经用作属性减值了。

自定义函数的格式,预想是{?like?1605271653&10?}表示点赞10次QQ1605271653。但是还要设计字符转义来保证完备性就很烦。

模块(mod)的安装卸载和优先级调整,以及把每个牌堆文件视为单独模块。当然这个不算瓶颈,只是一直没下手。

更新手记(2020.7.29)

这里是Shiki。我也没想到,exp11没了,饼不算数了。再回归成为Dice!主支的开发者,确实是我不曾想到的。当然这对用户而言没多大区别。作为一个整合过渡用的版本,这一说可以说没有什么明显的改动,尤其是在用户体验上。

当然又有新坑埋下了,那就是新的定时任务系统。我对造轮子有种额外的热衷,相较而言,新功能更像是机制建立后的水到渠成。所以我的饼做的比画的慢太多。等定时系统完善后,大概就可以用来跑团杀鸽子了。

更新手记(2020.5.14)

这里是Shiki,在半年时间里,exp10经历了一个繁复拖沓的开发周期。虽然有部分现实因素,但更多受限于开发者的项目管理能力不足。为了一次性将所有存档文件从酷Q默认文件夹搬迁到[DiceData]/,开发者被迫将所有认为需要改进的涉及文件的机制更新了一遍。好在有众多用户的积极支持,Dice!exp终于迎来了新一版正式发布版。

exp10的更新体现了两极分化的开发思路:对用户的极简化和对深度用户的高度定制化。对于开包即用的用户(超过Shiki全部万千骰娘的半数),初始设定将更贴合用户体验。对于没有认主导致的接收信息量不足问题,无主骰娘现在会在初始化后向自己发送通知,此后所有通知都会发送给自己。如此或有助于非官方渠道接触骰娘的用户更容易接触到骰娘的常规用法。

可以看到,exp10对黑白名单的扩展大大增加了用户的学习成本。因此我全套向下兼容了旧有的黑白名单、管理、监视窗口指令,试图构建简洁功能-高级功能并存的模式。用户可以不理解信任等级,而像之前那样使用.admin whiteqq和.master admin,也可以不理解单群设置而简单实用.admin whitegroup。

经历了exp9挖坑牌堆exp10完善后,我体验到了在大版本更新前挖好坑的模式,即提前做好扩展的空间等着大版本填坑。鉴于整个开发过于耗时,又希望生态圈内的创作者能尽早熟悉文件格式进行开发,exp10先用一天的开发时间支持了mod文件的基本格式,等待后续填充helpdoc以外的类型。session、mod在exp10都是看起来没那么重要的更新,但它们的作用都可以期待一下。那么,尽情催更exp11的开发吧,说不定到那时候,log、随机回复、敏感词检测、模糊匹配回复……都实现了呢。