{"id":27283775,"url":"https://github.com/windowssov8forus/tsugu-bot-go","last_synced_at":"2025-10-29T14:03:28.245Z","repository":{"id":234406722,"uuid":"788832707","full_name":"WindowsSov8forUs/tsugu-bot-go","owner":"WindowsSov8forUs","description":"✨ 一个 Go 实现的 TsuguBanGDreamBot 前端整合机器人应用 ✨","archived":false,"fork":false,"pushed_at":"2024-05-22T13:03:00.000Z","size":231,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T08:07:44.394Z","etag":null,"topics":["bangdream","bot","client","frontend","go","tsugu"],"latest_commit_sha":null,"homepage":"https://github.com/WindowsSov8forUs/tsugu-bot-go","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WindowsSov8forUs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-19T07:09:32.000Z","updated_at":"2024-07-22T06:07:08.000Z","dependencies_parsed_at":"2024-05-22T14:38:48.908Z","dependency_job_id":null,"html_url":"https://github.com/WindowsSov8forUs/tsugu-bot-go","commit_stats":null,"previous_names":["windowssov8forus/tsugu-bot-go"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindowsSov8forUs%2Ftsugu-bot-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindowsSov8forUs%2Ftsugu-bot-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindowsSov8forUs%2Ftsugu-bot-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindowsSov8forUs%2Ftsugu-bot-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WindowsSov8forUs","download_url":"https://codeload.github.com/WindowsSov8forUs/tsugu-bot-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248459794,"owners_count":21107369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bangdream","bot","client","frontend","go","tsugu"],"created_at":"2025-04-11T18:38:29.854Z","updated_at":"2025-10-29T14:03:28.236Z","avatar_url":"https://github.com/WindowsSov8forUs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![tsugu-bot-go logo](https://github.com/WindowsSov8forUs/tsugu-bot-go/blob/main/logo/tsugu-bot-go.png)\n\n# tsugu-bot-go\n\n_✨ 一个 Go 实现的 [TsuguBanGDreamBot](https://github.com/Yamamoto-2/tsugu-bangdream-bot) 前端整合机器人应用 ✨_\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n\n\u003ca href=\"https://github.com/Yamamoto-2/tsugu-bangdream-bot\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tsugu bangdream bot-v2 api-FFEE88\" alt=\"license\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://github.com/WindowsSov8forUs/tsugu-bot-go\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/WindowsSov8forUs/tsugu-bot-go\" alt=\"Latest Release Version\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://github.com/WindowsSov8forUs/tsugu-bot-go/blob/main/LICENSE\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/WindowsSov8forUs/tsugu-bot-go\" alt=\"License\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://golang.org/dl/\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/go-mod/go-version/WindowsSov8forUs/tsugu-bot-go\" alt=\"Go Version\"\u003e\n\u003c/a\u003e\n\n\u003c/p\u003e\n\n## 引用\n\n本项目参考了这些项目进行编写\n\n- [`tsugu-python-frontend`](https://github.com/kumoSleeping/tsugu-python-frontend)\n\n本项目引用了如下项目\n\n- [`satori-protocol-go/satori-model-go`](https://github.com/satori-protocol-go/satori-model-go)\n\n## 说明\n\n本项目是一个 Go 语言编写的机器人应用，通过与聊天平台进行通讯交互，并向 Tsugu 官方处理后端和用户数据后端、自建 Tsugu 后端或本地数据库发送请求进行数据处理，实现几乎全部的 **[TsuguBanGDreamBot](https://github.com/Yamamoto-2/tsugu-bangdream-bot)** (以下简称为 `Tsugu` ) 功能。\n\n\u003e 目前仅实现了与 Satori 协议聊天平台进行交互，且由于历史遗留问题暂时并未实现平台间冲突隔离，请注意\n\n### 实现的功能\n\n目前 **tsugu-bot-go** 已经实现了 Tsugu 的几乎全部功能，且支持对所有功能的全局开关配置，同时添加了针对机器人消息处理针对性的配置，以处理当使用场景出现冲突时的防冲突处理。\n\n### 待实现的功能\n\n- [ ] 多群组的机器人总开关\n- [ ] 运行过程中的功能开关配置\n- [x] 指令的别名配置\n\n## 使用\n\n从最新的 [Release](https://github.com/WindowsSov8forUs/tsugu-bot-go/releases) 中选择适合自己的版本，下载并运行。\n\n这个过程中，建议为 tsugu-bot-go 单独创建一个文件夹。\n\n\u003e Windows 系统在运行 `exe` 文件后，将会生成一个 `bat` 脚本，随后直接双击脚本运行即可。\n\n\u003e 目前仅 Windows 64位系统经过测试，其他系统若运行出现问题请立马 [告知作者](https://github.com/WindowsSov8forUs/tsugu-bot-go/issues)\n\n成功运行后，初次运行时 tsugu-bot-go 将会生成一个配置文件 `config.yml` 并退出运行。\n\n修改配置文件后重新运行即可。若配置无误，将会在终端看到 “连接成功” 的输出。\n\n### 支持的聊天平台\n\n- [x] Satori 协议聊天平台 ([`chronocat`](https://github.com/chrononeko/chronocat) 等)\n- [ ] Lagrange ([`LagrangeGo`](https://github.com/LagrangeDev/LagrangeGo) 正在开发中...)\n- [ ] 其他可能支持的聊天平台...\n\n## 配置\n\n\u003e 目前对于聊天平台连接的配置仅有 Satori 协议配置\n\n当 tsugu-bot-go 成功初次运行后，将会在同级目录下生成一个 `config.yml` 文件。编辑该文件即可以进行配置。\n\n配置结构如下：\n\n```yaml\n# 日志等级\n# 可选项：\n#   - 0：关闭日志\n#   - 1：仅输出致命错误日志\n#   - 2：输出致命错误日志和错误日志\n#   - 3：输出致命错误日志、错误日志和警告日志\n#   - 4：输出致命错误日志、错误日志、警告日志和信息日志\n#   - 5：输出致命错误日志、错误日志、警告日志、信息日志和调试日志\n#   - 6/7：输出所有日志\nlog_level: 4\n\ntsugu: # Tsugu 机器人配置\n  ...\n\nsatori: # Satori 配置\n  ...\n```\n\n### Tsugu 机器人配置\n\n该结构下包含多个针对 Tsugu 表现的配置，绝大多数配置无需特意更改，保持默认值即可。\n\n配置结构如下：\n\n```yaml\ntsugu: # Tsugu 机器人配置\n  require_at: false # 是否需要 at 才能触发指令\n  reply: true # 是否回复消息\n  at: false # 是否 at 发送者\n  no_space: false # 是否不需要指令头后空格\n  timeout: 10 # 超时时间，单位为秒\n  proxy: \"\" # 代理地址，如果不使用代理请留空\n  use_easy_bg: true # 是否使用简单背景，若关闭可能会减慢处理速度\n  compress: true # 是否启用压缩，若关闭可能会增加流量消耗\n\n  # 用户数据路径\n  # 若不使用，将会使用远程用户数据库\n  # 若不使用请设置为空\n  user_database_path: \"\"\n\n  # 禁止模拟抽卡\n  # 填入禁止使用抽卡模拟的群号\n  ban_gacha_simulate: []\n\n  car_station: # 车站配置\n    ...\n\n  verify_player: # 验证玩家配置\n    ...\n\n  backend: # 后端配置\n    ...\n\n  user_data_backend: # 用户数据后端配置\n    ...\n\n  functions: # 功能配置\n    # 功能开关\n    # 若关闭则不会处理相关功能\n    ...\n\n  car_config: # 车牌转发配置\n    ...\n```\n\n- `require_at`: 指定是否需要 at 才能触发指令；当为 `true` 时，仅 at 机器人的消息可以触发指令。\n- `reply`: 指定发送消息时是否回复对应的消息。\n- `at`: 指定发送消息时是否 @ 对应的发送者，在部分平台中回复并不总是携带 @ 。\n- `no_space`: 指定是否启用无需空格触发大部分指令，启用这将方便一些用户使用习惯，但会增加 bot 误判概率，仍然建议使用空格。\n- `timeout`: 指定后端请求超时时间；当为 `0` 时，将长时间等待后端响应直到连接关闭。建议设置范围在 `15-30` 之间。\n- `proxy`: 代理服务器地址，所有的请求当需要经过代理服务器时都会经过该服务器地址。当需要通过代理服务器才能够访问后端服务器时，通过该项配置配合子配置项中的 `use_proxy` 进行配置。\n- `use_easy_bg`: 是否使用简单背景。使用简单背景可以一定程度上减少后端响应耗时，若对生成图片没有特殊要求建议开启。\n- `compress`: 是否压缩图片。压缩图片可以一定程度上减少响应传输所用流量以及图片发送所需耗时，若对生成图片的质量没有特殊要求建议开启。\n- `user_database_path`: 本地用户数据库路径；当为空时将使用 `user_data_backend` 中配置的用户数据库后端。需要注意的是，各用户数据库以及本地用户数据库之间不会进行数据统一，请酌情配置。\n- `ban_gacha_simulate`: 禁止使用 `抽卡模拟` 功能的群组，填入群组 ID 以配置。可以在运行过程中配置，但无法保存至文件中，且在文件中的配置更改不会立马反馈到应用中，因此每次更改都需要重启 tsugu-bot-go 以应用配置。\n\n\u003cdetails\u003e\n\u003csummary\u003e车站配置 car_station\u003c/summary\u003e\n\n#### 车站配置 `car_station`\n\n`car_station` 子配置项用于对车牌转发进行配置。需要注意的是，车牌转发依然受 `require_at` 控制，因此当 `require_at` 为 `true` 时，仍然需要 at 机器人才能够进行车牌转发。此时建议开启 `forward_response` 选项，以即时得知车牌是否转发成功。\n\n配置结构如下：\n\n```yaml\n  car_station: # 车站配置\n    bandori_station_token: \"\" # BanG Dream! 车站令牌\n    forward_response: false # 是否转发响应\n    response_content: \"\" # 响应内容，只有在转发响应为 true 时有效\n```\n\n- `bandori_station_token`: 车站转发所需令牌。若没有自己的令牌，可不填，将会默认使用 Tsugu 的令牌。\n- `forward_response`: 是否在转发成功后进行响应。若为 `true` 则将会在转发成功后回复车牌所在消息，否则将会保持静默。\n- `response_content`: 仅当 `forward_response` 为 `true` 时有效，可用于自定义转发成功后的回复消息。此时若此配置留空，则会回复默认的转发成功消息。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e验证玩家配置 verify_player\u003c/summary\u003e\n\n#### 验证玩家配置 `verify_player`\n\n`verify_player` 子配置项用于对验证玩家进行配置。目前只有 `use_proxy` 唯一一个配置项，用于控制当使用本地用户数据库时是否使用代理服务器。\n\n由于当使用本地用户数据库时，验证玩家需要访问 **[bestdori](https://bestdori.com/)** ，因此若您的机器人所在网络环境无法直接访问 bestdori 或访问不稳定，且需要使用本地用户数据库，建议启用该配置。\n\n配置结构如下：\n\n```yaml\n  verify_player: # 验证玩家配置\n    use_proxy: false # 是否使用代理\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e后端配置 backend\u003c/summary\u003e\n\n#### 后端配置 `backend`\n\n`backend` 子配置项用于对后端进行配置。一般不需要更改该子配置。\n\n配置结构如下：\n\n```yaml\n  backend: # 后端配置\n    url: \"http://tsugubot.com:8080\" # 后端地址，默认为山本服务器后端地址，若有自建后端服务器可填入\n    use_proxy: false # 是否使用代理\n```\n\n- `url`: 后端地址。默认为 Tsugu 官方后端地址，若有自建后端服务器且官方后端访问不稳定可以配置。\n- `use_proxy`: 是否使用代理。若机器人所在网络环境访问后端受限，可启用该配置。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e用户数据后端配置 user_data_backend\u003c/summary\u003e\n\n#### 用户数据后端配置 `user_data_backend`\n\n`user_data_backend` 子配置项用于对用户数据后端进行配置。一般不需要更改该子配置。若配置了 `user_database_path` 选项，则表明启用了本地用户数据库，该子配置将无效。\n\n配置结构如下：\n\n```yaml\n  user_data_backend: # 用户数据后端配置\n    url: \"http://tsugubot.com:8080\" # 用户数据后端地址，默认为山本服务器后端地址，若有自建后端服务器可填入\n    use_proxy: false # 是否使用代理\n```\n\n- `url`: 后端地址。默认为 Tsugu 官方后端地址，若有自建后端服务器且官方后端访问不稳定可以配置。\n- `use_proxy`: 是否使用代理。若机器人所在网络环境访问后端受限，可启用该配置。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e功能启用配置 functions\u003c/summary\u003e\n\n#### 功能启用配置 `functions`\n\n`functions` 子配置项用于对 tsugu-bot-go 所启用的功能进行配置。其中每个子配置项都是一个功能，设置为 `true` 则在全局启用该功能，否则在全局关闭该功能。默认为全部开启，一般不需要进行更改。\n\n配置结构如下：\n\n```yaml\n  functions: # 功能配置\n    # 功能开关\n    # 若关闭则不会处理相关功能\n    help: true # 帮助文档\n    car_forward: true # 车牌转发\n    change_main_server: true # 切换主服务器\n    switch_car_forward: true # 是否允许指令开启车牌转发\n    bind_player: true # 绑定玩家\n    change_server_list: true # 切换服务器列表\n    player_status: true # 玩家状态\n    card_illustration: true # 查卡面\n    player: true # 玩家信息\n    gacha_simulatie: true # 抽卡模拟\n    gacha: true # 查卡池\n    event: true # 查活动\n    song: true # 查歌曲\n    song_meta: true # 查询分数表\n    character: true # 查角色\n    chart: true # 查谱面\n    ycx: true # ycx\n    ycx_all: true # ycxall\n    lsycx: true # lsycx\n    ycm: true # 有车吗\n    card: true # 查卡\n```\n\n- `help`: 帮助消息，发送指定功能的帮助信息。\n- `car_forward`: 车牌转发。\n- `change_main_server`: 切换主服务器。\n- `switch_car_forward`: 开启/关闭个人车牌转发。\n- `bind_player`: 绑定玩家。\n- `change_server_list`: 设置服务器列表。\n- `player_status`: 玩家状态。\n- `card_illustration`: 查卡面。\n- `player`: 查询玩家信息。\n- `gacha_simulatie`: 抽卡模拟。\n- `gacha`: 查卡池。\n- `event`: 查活动。\n- `song`: 查歌曲。\n- `song_meta`: 查分数表。\n- `character`: 查角色。\n- `chart`: 查谱面。\n- `ycx`: 活动指定等级预测线。\n- `ycx_all`: 活动全部预测线。\n- `lsycx`: 活动的历史预测线。\n- `ycm`: 有车吗？/查询车站车牌号。\n- `card`: 查卡。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e指令别名配置 command_alias\u003c/summary\u003e\n\n#### 指令别名配置 `command_alias`\n\n`command_alias` 子配置项用于对 tsugu-bot-go 的指令进行别名配置。其中每个子配置项都是一个字符串列表。\n\n配置结构如下：\n\n```yaml\n  command_alias: # 指令别名\n    switch_gacha_simulate: [] # 开关本群抽卡模拟\n    open_car_forward: [] # 开启车牌转发\n    close_car_forward: [] # 关闭车牌转发\n    bind_player: [] # 绑定玩家\n    unbind_player: [解绑玩家] # 解绑玩家\n    change_main_server: [服务器模式, 切换服务器] # 切换主服务器\n    change_server_list: [默认服务器] # 设置默认服务器\n    player_status: [] # 玩家状态\n    ycm: [有车吗, 车来] # 有车吗\n    search_player: [查询玩家] # 玩家信息\n    search_card: [查卡牌] # 查卡\n    card_illustration: [查卡插画, 查插画] # 查卡面\n    search_character: [] # 查角色\n    search_event: [] # 查活动\n    search_song: [] # 查歌曲\n    search_chart: [] # 查谱面\n    song_meta: [查分数表, 查询分数榜, 查分数榜] # 查询分数表\n    event_stage: [查stage, 查舞台, 查festival, 查5v5] # 查活动试炼\n    search_gacha: [] # 查卡池\n    ycx: [] # ycx\n    ycx_all: [myycx] # ycxall\n    lsycx: [] # lsycx\n    gacha_simulatie: [] # 抽卡模拟\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e车牌转发配置 car_config\u003c/summary\u003e\n\n#### 车牌转发配置 `car_config`\n\n`car_config` 子配置项用于对车牌转发功能进行配置。两个子配置项均为字符串数组。\n\n该子配置项自带一定数量默认项，一般情况下不需要进行额外配置。\n\n配置结构如下：\n\n```yaml\n  car_config: # 车牌转发配置\n    car: # 有效车牌关键词\n      ...\n  \n    fake: # 无效车牌关键词\n      ...\n```\n\n- `car`: 有效车牌关键词。若消息中不含该数组内任一关键词则将被视为无效车牌，不予转发。\n- `fake`: 无效车牌关键词。若消息中含有该数组内任一关键词则将被视为无效车牌，不予转发。\n\n\u003c/details\u003e\n\n### 平台连接配置\n\n在配置文件中，剩余的配置结构都将被视为平台连接配置。不同的配置结构名将被应用在不同的平台连接配置中。\n\n若某个平台的配置项不全，则将视为不连接对应平台。\n\n\u003e 目前仅适配了 Satori 协议聊天平台\n\n\u003cdetails\u003e\n\u003csummary\u003eSatori 协议聊天平台\u003c/summary\u003e\n\n#### Satori 协议聊天平台\n\n`satori` 配置项将用于对 **[Satori 协议](https://satori.js.org/zh-CN/)** 聊天平台进行配置。具体的配置内容请从对应的 Satori 平台内获得。\n\n配置结构如下：\n\n```yaml\nsatori: # Satori 配置\n  version: 1 # Satori 版本，目前只有 1\n  path: \"\" # Satori 部署路径，可以为空，如果不为空需要以 / 开头\n  token: \"\" # 鉴权令牌，如果不设置则不会进行鉴权\n  host: \"http://127.0.0.1\" # 主机地址\n  port: 5140 # 端口\n```\n\n- `version`: Satori 协议版本号，输入对应版本号的数字即可。\n    \u003e 目前仅支持 `v1` 版本\n- `path`: Satori 平台设置的机器人部署路径，若未设置则留空即可。\n- `token`: Satori 平台与机器人应用连接所需的鉴权令牌，若无需鉴权则留空即可。若需要鉴权，留空则无法进行连接。\n- `host`: Satori 平台与机器人应用连接的地址，若处于相同网络环境下则填入 `\"http://127.0.0.1\"` 即可。\n- `port`: Satori 平台与机器人应用连接的端口，输入端口对应 `1-65535` 的数字即可。\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindowssov8forus%2Ftsugu-bot-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwindowssov8forus%2Ftsugu-bot-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindowssov8forus%2Ftsugu-bot-go/lists"}