taiko-bot 是一个面向《太鼓达人》查询与同步场景的 NoneBot 项目,支持 OneBot V11,并依赖 viewer.sakura-bot.cn 提供公共数据、资源包和中心代理接口。
项目许可:GPL-2.0-only。完整文本见仓库根目录 LICENSE。
- Python
3.11推荐、也是当前主要测试版本 - 实际可安装范围以
pyproject.toml为准 - Windows、Linux、macOS 均可运行
- 一个可直连的 OneBot V11 客户端
- 可访问
https://viewer.sakura-bot.cn
git clone https://github.com/sigaer/taiko-bot.git
Set-Location .\taiko-bot
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install -e .
Copy-Item .env.example .envgit clone https://github.com/sigaer/taiko-bot.git
cd taiko-bot
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install -e .
cp .env.example .env如果本机还没有 Python 3.11,可先从 https://www.python.org/downloads/ 安装,或使用系统包管理器安装。
最少需要确认这些配置:
HOST=0.0.0.0
PORT=37564
TAIKO_VIEWER_BASE_URL=https://viewer.sakura-bot.cn
TAIKO_VIEWER_DEVELOPER_TOKEN=
TAIKO_BOT_SERVICE_TOKEN=HOST/PORT- bot 主服务监听地址。
- OneBot V11 客户端默认连接
ws://127.0.0.1:37564/onebot/v11/ws。
TAIKO_VIEWER_BASE_URL- viewer 服务地址。
- 默认是
https://viewer.sakura-bot.cn。
TAIKO_VIEWER_DEVELOPER_TOKEN- 用于把 viewer 中心接口的每日额度从
100次提升到2500次。 - 留空时,查询、更新、Hiroba、Wahlap 等中心代理接口仍可用,但按匿名额度计数。
- 填写后,请求会带上
Authorization: Bearer <token>,按开发者额度计数。 - 如果你只是先验证 bot 能否启动,可以先留空;后续需要更高调用额度时再填写。
- 用于把 viewer 中心接口的每日额度从
TAIKO_BOT_SERVICE_TOKEN- 用于创建、认领和维护手动成绩账号,必须与 viewer 的同名配置一致。
- 它不是开发者额度 token;未配置时仅手动账号写命令不可用。
- 不要将真实值提交到仓库。
QQ_IS_SANDBOX- 仅在你接入 QQ 官方机器人时使用。
true表示沙箱环境,false表示正式环境。
QQ_BOTS- 仅在你接入 QQ 官方机器人时填写。
- 它是一个 JSON 数组,每个元素表示一个 QQ 官方机器人应用。
- 常见字段:
id:AppIDtoken/secret:官方后台分配的凭据use_websocket:是否启用 QQ 官方 WebSocketintent:事件订阅开关
.env.example中保留了一条可直接改值的示例。
QQ_MARKDOWN_IMAGE_BASE_URL- 仅在你使用 QQ 官方机器人,并希望发送 Markdown 图片消息时需要关注。
- bot 会把图片缓存到本地输出目录,再通过这个公开地址让 QQ 侧访问。
- 如果你自建 viewer 域名,需要把它改成你自己的公开地址,并确保该地址能访问图片缓存目录。
BOT_GROUP_WHITELIST_PATH- 仅在你希望限制 bot 只在部分群启用时填写。
- 指向一个 JSON 文件,格式示例:
{
"123456789": ["987654321", "1122334455"]
}- 含义是:bot 账号
123456789仅在这些群号内启用。 TAIKO_CORE_HOST/TAIKO_CORE_PORT/TAIKO_GATEWAY_HOST/TAIKO_GATEWAY_PORT- 仅在你使用 Core / Gateway 双进程模式时需要。
TAIKO_LOCAL_DATA_API_HOST/TAIKO_LOCAL_DATA_API_PORT- 仅在你打算把本地维护接口单独起成第二个进程时需要。
- 默认单进程部署不需要改。
首次启动时会自动:
- 拉取公共 JSON 数据到
songs/ - 检查
assets/.bundle.sha256 - 在资源缺失或版本变化时自动后台下载并解压最新资源包到
assets/ - 按需同步地图快照到
storage/data/arcade_map_cache/
说明:
- 绑定、当前槽位、成绩、历史都以 viewer 中心为准。
- bot 本地不再把
storage/cache/userdata/、taiko_multi_bind.json这类文件当作权威数据源。 - 首次完整资源同步在普通网络环境下可能接近 15 分钟。
- bot 进程会先启动;资源未就绪时,图片类功能会提示稍后再试,不会因为大资源包下载而卡死整个启动流程。
默认推荐单进程启动,不需要先单独启动本地数据 API。
.\.venv\Scripts\Activate.ps1
python .\bot.pysource .venv/bin/activate
python bot.py启动后:
- OneBot V11 WebSocket 地址:
ws://127.0.0.1:37564/onebot/v11/ws
- 同进程本地维护接口地址:
http://127.0.0.1:37564/local-api/healthhttp://127.0.0.1:37564/local-api/v1/public/synchttp://127.0.0.1:37564/local-api/v1/arcades/query?city=鞍山
- 默认不需要
nb run。 - Windows 下如果直接调用系统全局
nb,可能会误用全局 Python 环境,触发redis.asyncio缺失这类与 bot 本体无关的依赖错误。 - 如果你确实想用
nb run,请确保使用当前虚拟环境里的nb:
.\.venv\Scripts\Activate.ps1
.\.venv\Scripts\nb.exe run默认已经合并进 bot 进程,挂载路径是 /local-api,平时不需要单独启动。
常用接口:
GET /local-api/healthPOST /local-api/v1/public/syncPOST /local-api/v1/arcades/syncGET /local-api/v1/arcades/query?city=鞍山GET /local-api/v1/userdata/{user_id}GET /local-api/v1/userdata/{user_id}/historyGET/PUT /local-api/v1/runtime/draw-guess
以下接口已经停用,会返回 410 Gone:
GET/PUT /local-api/v1/runtime/multi-bindPUT /local-api/v1/userdata/{user_id}
如果你确实需要把它单独起成第二个进程:
.\.venv\Scripts\Activate.ps1
python -m uvicorn taiko_data_api:app --host 127.0.0.1 --port 37565source .venv/bin/activate
./scripts/start_local_data_api.sh只有在你明确需要 Core / Gateway 分离部署时再使用这一模式。
终端 1:
.\.venv\Scripts\Activate.ps1
$env:BOT_POOL_METRICS_SERVICE_NAME="taiko"
python -m uvicorn bot_core:app --host 127.0.0.1 --port 37563终端 2:
.\.venv\Scripts\Activate.ps1
$env:ONEBOT_GATEWAY_SERVICE_NAME="taiko"
$env:ONEBOT_GATEWAY_CORE_WS_URL="ws://127.0.0.1:37563/onebot/v11/ws"
$env:ONEBOT_GATEWAY_CORE_HTTP_URL="http://127.0.0.1:37563"
$env:ONEBOT_GATEWAY_ALLOW_CROSS_HOST_TAKEOVER="1"
$env:ONEBOT_GATEWAY_DUPLICATE_TAKEOVER_IDLE="0"
python -m uvicorn bot_gateway:app --host 0.0.0.0 --port 37564source .venv/bin/activate
./scripts/start_taiko_gateway_core.sh- 成绩更新:
taikoupdate、更新广场、更新hiroba - 成绩查询:
b30、进度图、查分、总结图、词云 - 地图查询:
xx哪有鼓 - 绑定与多账号:绑定、切换账号;当前槽位由 viewer 中心统一维护
- 本地维护接口:公共数据同步、地图同步、运行态存储、中心数据代理查询