Giter Club home page Giter Club logo

sealdice-core's Introduction

SealDice

简介

海豹骰工程代码合并仓库,用于实现全平台自动出包。

使用 git submodule 机制整合以下四个仓库的代码

克隆该项目时需要使用 git clone --recursive 命令以将子模块代码一并拉取。

细节

自动构建

工作流为 auto-build.yml,相关 jobs 功能:

  • commit-num-check:用于检查 24 小时内是否有新 commit,没有则每天自动触发的构建不打包;
  • resources-download:下载资源文件,牌堆、helpdoc、gocghttp 等;
  • gocqhttp-build,gocqhttp-android-build:自动编译所需平台的 gocqhttp,android 端需要使用 NDK;
  • ui-build:ui自动构建;
  • core-build,core-darwin-build,core-android-build:core 的自动构建,分别为 windows&linux macos 和 android;
  • pc-pack:windows & linux & macos 三端的打包,会组装 helpdoc、gocqhttp 等资源文件;
  • android-build:android apk 的打包,目前只打包 debug 版本,也会组装资源文件;
  • clear-temp-artifact:清理产物,保证 artifacts 整洁。

关于 issue 和 pull request

你可以通过 fork 本项目并提交 pull request 的形式贡献代码

sealdice-core's People

Contributors

dependabot[bot] avatar flametext avatar fripine avatar fy0 avatar justanotherid avatar mintcider avatar oissevalt avatar paiennate avatar szzrain avatar xiangze-li avatar yichere avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sealdice-core's Issues

[BUG] 使用插件自定义规则时的杂项问题

测试前提

  1. 通过 JavaScript 插件自定义了名为 custom-rule 的模版,set 关键字为 test。模版定义了几项属性,其中 魔法(同时是 COC 的 魔法值 的别名)的别名为 mag狡诈 的别名为 cun
  2. 通过 JavaScript 插件自定义了三个指令,分别对应三种获取属性值的方法:
  • 读卡:使用 ctx.chBindCurGet 获取当前绑定卡名,然后用 ctx.chBindGet 读取。默认返回 0。
  • 格式化:使用 seal.format 获取。默认返回 0。
  • 混合:在 读卡 失败的情况下,使用 格式化。默认返回 0。

测试步骤

所有测试在 QQ 平台,群组聊天中进行。海豹核心版本为:SealDice 1.2.3 v20230315。

  1. 使用 .set test 切换到自定义规则。
  2. 不使用人物卡,.st 魔法6 狡诈8
  3. 按以下顺序执行:.读卡 魔法.读卡 mag.读卡 狡诈.读卡 cun.格式化 魔法.格式化 mag.格式化 狡诈.格式化 cun.混合 魔法.混合 mag.混合 狡诈.混合 cun
  4. 清除属性,新建人物卡,.st 魔法6 狡诈8
  5. 重复步骤 3。

测试结果

不使用人物卡

读卡 魔法 读卡 mag 读卡 狡诈 读卡 cun
0 0 0 0
格式化 魔法 格式化 mag 格式化 狡诈 格式化 cun
6 6 8 8
混合 魔法 混合 mag 混合 狡诈 混合 cun
6 6 8 8

使用人物卡

读卡 魔法 读卡 mag 读卡 狡诈 读卡 cun
6 0 8 0
格式化 魔法 格式化 mag 格式化 狡诈 格式化 cun
0 0 8 8
混合 魔法 混合 mag 混合 狡诈 混合 cun
6 0 8 0

可以看到,读取属性相当混乱。

其他问题

  1. 由于自定义的 魔法 同时也是 COC 的 魔法值 属性的别名,当使用 ra 魔法 后,魔法 的值会变为 0,同时原本的值被转移到 魔法值 上去,即使并没有用 st 设置 魔法值
  2. 测试时发现,删除自定义模板并重启骰子后,重启前仍然是这一规则的骰子会在 st stshow 时报错,并回复 指令执行异常

测试用的文件已经附在此处

清群功能

自动清除长时间无记录的群聊,自动检测已解散或不存在的群聊并清除

WebUI 指令测试功能支持模拟群聊

譬如,除了模拟一对一的对话,还可以模拟群组聊天。

我设想的是,用户可以选择不同的身份(群主/管理员/邀请人/骰主/普通人/黑名单)与骰子私聊或者群聊,这样可以减少必须注册多个账号测试骰子的繁琐性以及由此导致的封号风险。

骰子离开群聊时自动将log全部导出并删除

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

对于已经离开/解散的群聊, 骰子的跑团log只能通过log masterget取出而无法删除. 这导致数据库和备份文件的大小无法反转地增大.

有什么好的想法?

请考虑在骰子离开群聊/群聊解散时自动对本群的每个log尝试 1.自动结束, 2.自动导出/上传, 3.从数据库中删除.

并且可以将导出的文件或生成的log染色器链接私聊发给群主/邀请者/退群指令发送者. TA们应当是可以联系到群成员, 可以为这个团后续的log获取需求负责.

其他内容

注意到 Issue #61 要求未发生变化的log不重复上传/导出, 在该Issue完成后再实现此功能应不会导致严重的重复上传/重复导出.

另外, Issue #58 的思路与本Issue是有重叠的. 但是, 58的思路是将这种管理交给骰主手动完成; 本Issue的思路是自动化完成, 且将log的分发下放到每个群聊/团的管理者. 因此我认为两者并不冲突或重复.

刷屏警告

希望加个刷屏警告功能方便拉黑刷屏的,因为调用指令没有速度限制

对外api接口

请问有计划提供对外供其他语言的api接口嘛?比如python或者c++(因为当前的技术栈还没有go)
或者提供go语言的api接口文档?
因为我们正在尝试把gpt接入海豹,发现相关的文档比较难找QAQ
想请问下有类似的计划嘛?

[BUG] 通过WebUI重新登录KOOK账号的弹窗不会自动消除

sealdice服务重启后日志提示KOOK连接失败。尝试通过WebUI重新登录KOOK,出现与QQ相同的弹窗,但一直维持在“进行登录……”状态无法继续。弹窗没有自动消失,亦无法关闭。通过直接刷新网页可以绕开。

检查日志发现,实际上KOOK账号很快就登录完成了,实际测试也正常。

2023-03-22T10:39:07.930+0800 INFO dice/platform_adapter_kook.go:189 正在重新登录KOOK服务……
2023-03-22T10:39:09.224+0800 INFO dice/platform_adapter_kook.go:181 KOOK 连接成功,账号xxx

屏幕截图 2023-03-22 104006

海豹版本 SealDice 1.2.4 v20230319
部署环境 Linux服务器,发行版为CentOS8,x86_64架构
部署方式 一键部署,注册了系统服务

i18n

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

建议支持英文

有什么好的想法?

No response

其他内容

No response

coc自定义文案中的属性设置_保存提醒触发条件需要修改

现在的coc自定义文案中的用于st hp+1等指令的【属性设置_保存提醒】这一项,默认情况下,只有当前群的角色卡是绑定中的角色卡时才能触发。
然而绑定卡是自动保存角色数据的,并不需要保存提醒。需要改为当前群的角色卡是未绑定的角色卡时修改角色属性才会触发保存提醒。
Screenshot_20230213_015304_com android chrome

.en批量增长

目前成长指令只能单个操作,如果添加批量操作可以有效避免刷屏,如.en 聆听 教育 图书馆,即可一次性为三个指令分别成长。

.en <技能一>/<技能二>/<技能三> 或者分隔符为空格

[Request] 通过UI管理跑团log

目前的log只能按群聊分别通过指令列出, 在log数量较多或群已经解散的情况下不够方便.

希望增加一个UI界面, 或在群组管理界面增加一个功能, 能够列出现有的log, 并且提供删除和下载功能.

我所设想的理想情况是:

  1. 在一个新的界面中展示所有群的log
  2. 并且支持分页和筛选(以应对log数量很多的情况), 可以想到的筛选条件可以包括 群号, 开启状态, 最后修改时间, 开启时间, log名字 等
  3. 对于每个log, 支持通过UI下载和删除, 等价于指令.log get.log rm
  4. 如果可能, 再对3支持批量操作

另外还有一个次要建议: 请考虑再额外增加 上传log到骰子 的功能. 即, 骰主可以从一个骰子下载log, 然后上传到另一个骰子. 这在两个骰子之间迁移的时候可能有用. 也有可能在 跑团进行到一半, 原来的骰子被封禁, 更换另一个骰子继续 这一场景有用.

给指令测试的UI:1001加个头像

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

指令测试里面,海豹有头像,但是发指令的这边没有头像。有可能的话请也给这边加个头像吧

image

有什么好的想法?

No response

其他内容

No response

JS 插件能够获取当前插件列表

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

一个JS插件依赖另一个插件时,需要判断依赖存不存在。

有什么好的想法?

No response

其他内容

No response

[BUG] 同时使用fetch和onNotCommandReceived的Js插件会在UI界面的指令测试中无显示

描述你遇到的 bug
当我在指令测试界面测试使用onNotCommandReceived的插件时,指令界面没有相应,但日志中显示 发给UI:1001:xxx。经测试,只有调用了fetch api且使用onNotCommandReceived的插件才会出现这种状况。

如何复现
复现此bug的步骤:

  1. 安装任意同时使用fetch和onNotCommandReceived的插件,这里我测试的是“一言”;
  2. 上传并重载
  3. 在指令界面输入“一言”(onNotCommandReceived触发词)
  4. 日志显示已经发出但UI无显示。

你期望发生的
我希望它可以在指令测试界面中显示日志中显示发给UI:1001的内容。

实际上发生的
UI没有显示。

环境信息:
请根据实际使用环境修改以下信息。

  • 海豹版本: v1.2.2
  • 运行环境: Windows
  • 帐号类型: 发生于UI界面指令测试中
  • 使用协议: 无

[Request] 【helpdoc】UI管理helpdoc文件与读取文件名分类以实现专项查询

你的功能请求是否与一个问题有关?请描述。
目前装载helpdoc文件只能手动打开文件夹上传,较为繁琐,特别是在服务器上操作时
现在海豹的helpdoc仅读取sheet名与keys,对于一些重复词条无法很好地区分。
描述你想要的解决方案
在UI界面增加上传删除helpdoc功能可以让更新helpdoc文件更加方便
增加以文件名分类强制约束helpdoc查询文件范围,以实现.查询 5e xxx/.查询 coc xxx这样的单独查询、

[Request/Improvement] 优化JS插件重载流程方便调试

调试插件时,完成编辑后需要先到WebUI的插件管理重载JS再到指令测试或QQ群测试效果。这样就需要在编辑器、WebUI、QQ群三个窗口之间切换。

因此,我希望能够优化插件重载流程,将切换的窗口数减少到两个。

我目前设想了两个可能的实现方法:

  1. 在WebUI的指令测试页面增加一个「重载JS」按钮,功能与插件管理页面一致即可;这样实现,测试时只需在编辑器和WebUI切换;
  2. 增加一个重载插件命令,功能与牌堆的 draw reload 类似;这样实现,测试时只需在编辑器和QQ群切换。

请考虑支持,优化一下插件开发体验。

[BUG] 一种自定义不回复的情况

描述你遇到的 bug
日志上有消息、reply扩展开着、botoff,但是没有回复

如何复现
image

image

image

你期望发生的
进行回复

实际上发生的
@后不回复

复现所需要的代码/额外材料
如果有,请在这里附加上复现bug所需要的额外材料/文件等。

日志/屏幕截图
如果可能,请在这里加上你的屏幕截图,请包含尽可能多的信息,截图应当足够清晰以展示你遇到的bug

环境信息:
请根据实际使用环境修改以下信息。

  • 海豹版本: 1.1.2
  • 运行环境: Andorid
  • 帐号类型: QQ
  • 使用协议: Android

附加内容
如果你还想要提交任何附加的信息,请放在这里

jsvm应对while等无限循环或死递归进行一些限制

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

现在海豹没有对jsvm所能执行的次数进行任何的限制,这会导致非常容易写出(有意或无意)的有害插件,如:

while (true){
    a += 1;
    arr.push(a)
}

这种代码,会在一瞬间消耗所有资源导致卡死。且,在触发这种插件时,海豹不会退出,而是一种类似于死机的状态,这是极其不利的。应该至少做到在重载插件时进行一次检查,防止这种情况。

有什么好的想法?

暂无,等待补充

其他内容

No response

以st格式导出角色卡

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

在跨骰子使用同一角色时,往往需要在第一个骰子st show,手动将人物属性和状态更新回excel人物卡,再导入第二个骰子。这过程耗时且容易遗漏数值。

有什么好的想法?

希望能够提供stpc的子指令,将当前角色卡或某个保存的角色卡输出为录入格式,其中也要包含自定义技能和标准技能的初始值。这样的话,用户就可以直接复制骰子发出的内容,输入给另外的骰子。

考虑到多个骰子互相干扰的可能,或许可以略去.st指令或.前缀,抑或是增加一个干扰的前缀如(

其他内容

No response

[BUG] 自动更新后更新文件未成功清理

我使用骰子指令从v1.2.3升级到v1.2.4, 升级完成后功能正常, 通过 .bot about 检查版本是新版本. 上服务器发现骰子目录内仍有 auto_update 可执行文件和 update 目录. 我在升级到v1.2.3时也出现了此情况, 应当是较稳定的复现(#172).

检查日志文件 data/main.log 发现有以下错误信息:

2023-03-20T06:03:07.760+0800 INFO sealdice-core/update.go:54 准备下载更新: sealdice-core_1.2.4_linux_amd64.tar.gz
2023-03-20T06:03:11.360+0800 INFO sealdice-core/update.go:68 更新下载完成,保存于: ./update/update.tar.gz
2023-03-20T06:03:13.860+0800 INFO sealdice-core/main.go:38 程序即将退出,进行清理……
2023-03-20T06:03:38.958+0800 INFO sealdice-core/logger.go:39 核心日志开始记录
2023-03-20T06:03:38.959+0800 WARN sealdice-core/main.go:224 检测到 auto_update.exe,即将进行升级
2023-03-20T06:03:39.073+0800 ERROR sealdice-core/main.go:227 更新: 复制文件失败: open sealdice-core: text file busy
2023-03-20T06:03:42.522+0800 INFO sealdice-core/main.go:420 即将启动webui

再向前追溯, 在升级到v1.2.3和v1.2.2的过程中, 亦出现相同的错误日志.

2023-03-04T10:00:33.459+0800 ERROR sealdice-core/main.go:218 更新: 复制文件失败: open sealdice-core: text file busy
2023-03-15T08:42:31.455+0800 ERROR sealdice-core/main.go:218 更新: 复制文件失败: open sealdice-core: text file busy

部署环境为腾讯云轻量服务器, CentOS8系统. 部署方式为手册版一键部署, 并注册了系统服务.

[Chore] make lint happy

dice\ext_fun.go:604:30: S1039: unnecessary use of fmt.Sprintf (gosimple)
texts = append(texts, fmt.Sprintf("成功线k: 需要至少为1"))
^
dice\ext_fun.go:616:30: S1039: unnecessary use of fmt.Sprintf (gosimple)
texts = append(texts, fmt.Sprintf("骰子面数m: 需要在1-2000之间"))
^
dice\ext_fun.go:628:30: S1039: unnecessary use of fmt.Sprintf (gosimple)
texts = append(texts, fmt.Sprintf("加骰线a: 需要至少为2"))

[Bug]: dnd模块的dc也有1.2.5时coc模块dex一样的问题,骰子确定是1.2.6版本的了

在提问之前...

  • 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我已查看master branch或最新测试版的更新内容,并未提及该 bug 已被修复的情况
  • 已有issue中并没有看见其他人与我反馈相同的问题

问题描述

录卡时的ac:xx dc:xx会被识别成ac:xxd,c:xx

如何复现

嗯,加空格也没用,目前只能分开录卡

你期望发生的

正常的应该是录入ac:xx,dc:xx

实际上发生的

同上

日志文件

`}QMHN6X)ER73HLVVQOVC2W_tmb

截图

No response

海豹核心版本

1.2.6 v20230410

操作系统

win64

帐号类型

qq,虽然感觉其他平台可能也有问题

使用协议

No response

附加内容

No response

[Request] 支持多张人物卡之间数据调用和检定。[NPC系统,代骰机制的泛用]

你的功能请求是否与一个问题有关?请描述。
支持多张人物卡之间数据调用和检定。[类NPC系统,创建多人物卡]

描述你想要的解决方案
海豹本身是有多人物卡系统的。希望以此基础上可以在跑团中调用检定人物卡列表中的其他卡的数值,以此来实现在带团时,如有NPC或者怪物的情况下,可以让KP提前录入NPC/怪物数值,在带团中一键调用,在指令实现上是代骰机制的泛用。例如:.ra 侦察@人物卡1,.ra 侦察@人物卡2。

[Request] 为插件添加进退群时触发的方法

希望能为插件添加进群时触发的 OnGroupEntered 和退群时触发的 OnGroupQuitted 方法。

研究了一下源码,应该只要在 ExtInfo 中添加,然后在各群组 adapter 相应位置 CallWithJsCheck 即可。

进群方法应该只需要一个 MsgContext 参数,退群方法或许能再加一个 subType(kick/leave)以读取退群原因。

控制添加好友的速度和数量

目前只能做到一刀切,一旦有很多人加骰子会触发tx机制导致冻结,希望能做到对好友申请不同意也不拒绝,方便骰主管控加好友的速度和数量

[BUG] pcdel导致的角色卡无法解绑和删除

绑定角色卡时,pc del留空默认用玩家名检索角色,如果成功检索到未绑定的角色卡,会:
◆删除对应角色
◆清除群内空白卡
◆解除当前群绑定状态,启用群内空白卡
◇原先绑定角色会变为★(绑定信息有当前群,但当前群却不是绑定状态)
出现◇的情况后,如果再去绑定另外一张角色卡。
会出现[错误显示★的角色卡]无法用pc untagall解绑,同时也无法用pc del删除的情况。
——————————————
【复现步骤】
1.准备三张未绑定的角色卡
2.pc tag绑定第一张
3.nn 更名为第二张
4.发送[pc del]
5.pc tag绑定第三张

此时第一张会变成[错误显示★的角色卡],无法用pc untagall解绑,也无法用pc del删除

增加一个 pc show 指令

在提问之前...

  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我基本确定这是一个新功能/建议,而不是遇到了 bug(不确定的话请附上日志)

说说你遇到的问题?

通过pc指令保存的角色卡不能直接查看,只能先通过pc load读取出来再st show,而这又会造成当前的群组临时角色卡失掉。

有什么好的想法?

仿照st show,增加一个pc show <角色名>指令,直接列出指定角色的属性。

其他内容

No response

log一键发送邮箱

有时候log文件打开链接有些麻烦,能不能一键发送到邮箱里,存起来方便,找起来也方便。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.