{"repo":"sealdice/sealdice-core","free":true,"listed":false,"github":"https://github.com/sealdice/sealdice-core","clone":"git clone https://github.com/sealdice/sealdice-core.git","description":"海豹骰核心程序，新一代trpg骰点机器人。轻量易用，功能强大，支持所有主流IM平台，并能在win/linux/mac/android下使用。","language":"Go","stars":289,"topics":["discord","dodo","kook","onebot","sealdice","telegram","minecraft","trpg","trpg-tool","bot"],"license":"MIT","category":"chat-messaging","readme_excerpt":"SealDice 海豹 TRPG 骰点核心，开源跑团辅助工具，支持 QQ/Kook/Discord 等。 轻量 · 易用 · 全能 文档 见 使用手册。 SealDice Project - 核心（本仓库）：Go 后端代码仓库，也作为海豹的主仓库，Bug 可反馈在该仓库的 issue 中； - UI：前端代码，基于 Vue3 + ElementPlus 开发； - 手册：官方手册源码，由 VitePress 驱动； - 构建：自动构建仓库，用于自动化发布海豹的每日构建包与 Release； - Android：Android 应用源码； - …… 注：如无特殊说明，所有代码文件均遵循 MIT 开源协议 Core 开发环境搭建 golang 开发环境 编译的 golang 版本为 1.25.0。在 构建 仓库中采用对 go 进行修补的方式以支持 Windows 7 等低版本系统。 因部分依赖库的需求，可能需要配置国内镜像，个人使用 镜像。 代码格式化 本项目要求所有代码使用 goimports 进行格式化。这一行为已经设定在本项目的编辑器配置文件中。 在本地配置 LINTER 本项目使用 golangci-lint 工具进行静态分析。 此工具对于代码开发 不是 必要的。但是，本项目的 CI 流程中配置了 linter 检查，不符合规范的代码不能被合入。 因此，强烈推荐开发者在本地安装此工具，请参考这份文档。分析器的相关配置位于 .golangci.yml 文件中。 你可能需要调整编辑器的相关配置，使用 golangci-lint 为默认的分析工具，并开启自动检查。 对于 Visual Studio Code，列出以下配置项供参考： 1. go.lintTool 选择 golangci-lint 2. go.lintFlags 添加一项 --fast 3. go.lintOnSave 不能 选择 file，因为只分析单个文件会导致无法正确解析符号引用 以上配置没有写入项目的统一设置，以允许开发者不本地使用 golangci-lint 编译运行 使用 go-task 你可以安装 go-task 以执行预置好的任务。安装后可执行： 手动执行 你也可以按照以下步骤手动进行编译运行： 拉取代码并配置数据文件 使用 git 拉取项目代码 从已发布的海豹二进制包中，解压 data 、 lagrange 两个目录到代码目录下。 同时需要在项目的 static/frontend 下放置用于打包进 core 的 ui 静态资源文件，可手动提供，也可通过命令自动从 github 拉取： 放置静态资源大致如下： 运行编译命令 打开项目，或使用终端访问项目目录，运行： 或者直接使用： 启动项目，大功告成！ 重点 从哪开始看 从 main.go 开始，这里海豹分出了几个线程，一个启动核心并提供服务，另一个提供 ui 的 http 服务。 可以顺藤摸瓜了解海豹如何启动，如何提供服务，如何响应指令。指令响应的部分写在 im session.go 中 注意有部分代码还在构思中，实际并未使用，例如 CharacterTemplate ，请阅读时先 Find Usage 加以区分 重要数据结构 dice.go 中的 Dice 结构体存放着各种核心配置，每个 Dice 实例是一个骰子，而每个骰子下面可以挂靠多个端点 (EndPoint)。端点即交互渠道，例如一个 QQ 账号是一个端点。 所有的端点由 IMSession 来统一管理，同样的，这个类也负责接收和分发指令。 可能你会注意到有 ","default_branch":null,"files":null,"tree":[],"storefront":"/r/sealdice","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sealdice/sealdice-core/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}