RankHub

API 目前处于 Early Preview 阶段, 可能存在诸多不完善与错误之处,欢迎加群交流反馈:加入官方交流群(1073434398)

phi-plugin

从 phi-plugin(Phigros bot 插件)的数据模型迁到 RankHub v1:存档结构、单曲 rks、best27+φ3、难度枚举与推成绩字段。

这一页写给做过 phi-plugin 开发/二次开发的开发者: 你熟悉的那套 Phigros 数据(Save / gameRecord / 单曲 rks / (φ3+best27)/30)怎么接到 RankHub v1。 字段细节见 phigros 格式,这里只讲「怎么搬」。

你会的东西 vs RankHub

phi-plugin(model/save/Save.js、model/game/*)RankHub v1
玩家身份:云存档里的 userInfo.objectId + nickname建档 POST /v1/games/phigros/profiles,身份字段 objectId,展示名 name
gameRecord[songId][0..4]:下标即难度(EZ/HD/IN/AT/LEGACY)成绩唯一键 songId(字符串) + difficulty(EZ/HD/IN/AT/Legacy)
单条 score / acc / fc / rank / Rating / difficulty(定数) / rksscore / accuracy / fullCombo / rank / constant / rating(单曲)
单曲 rks 自己算:acc==100 → 定数;acc<70 → 0;否则 定数×((acc−55)/45)²你可以自己算后放 rating;RankHub 不代算 phigros 的单曲分
总 rks = (φ3 + best27) / 30,LEGACY 不进桶GET .../bests 的 totals 是同一口径(φ3 + best27、LEGACY 排除)
凭证:TapTap sessionToken(LeanCloud)凭证是 OAuth access token;sessionToken 不能当身份
bot 事件 (e, …)、Redis 绑定、渲染/发图无 bot 层;纯 HTTP API

建档:只需要两个值

{ "player": { "objectId": "12345678", "name": "Player" } }
  • objectId 就是 phi-plugin userInfo.objectId(存档里的玩家 id,不是 sessionToken);
  • name 用 nickname;
  • 可选 shortId;已有档案时重复建档会 409,改展示名走 PATCH /v1/games/phigros/profiles/{profileId}。

推成绩:字段一一对应

{
  "scores": [
    {
      "songId": "996",
      "difficulty": "IN",
      "score": 998000,
      "accuracy": 99.65,
      "fullCombo": true,
      "constant": 15.6,
      "rating": 15.48,
      "rank": "V"
    }
  ]
}
phi-plugin 字段RankHub 字段说明
id(songId)songId必须字符串
rank(难度 EZ/HD/IN/AT/LEGACY)difficulty枚举大小写:Legacy 不是 LEGACY
score(0~1,000,000)score比较值;只升不降
acc(0~100 百分数)accuracy + achievements两个字段同值,避免消费者拿不到
fc(bool)fullCombo(true 时同时 fc: "fc")
difficulty(定数)constant曲库定数;不传也能落库,但算不了分
rks(phi-plugin 自己算的)ratingphigros 的 rating 由调用方给
Rating(ϕ/V/S/A/B/C/F)rank注意 ϕ 是 U+03D5,不是 phi
—playTime / artist可选

也可以直接给 native(phigros 原生键:song_id / difficulty / score / acc / constant / rks / fc / rating / artist),服务端换算,见 phigros 原生数据。

三个必须注意的差异

  1. 评级多两档:phi-plugin 的 Rating() 会返回 FC(低分但全连)和 NEW(0 分),RankHub 没有这两档; 落库前请把 FC 归到 V/F 中合适的档,NEW 视为 0 分不进榜。
  2. ϕ 的写法:RankHub 是 ϕ(U+03D5);phi-plugin 源码里用的是 ASCII 'phi',别原样透传。
  3. LEGACY 不进总 rks:phi-plugin 的 Level = ['EZ','HD','IN','AT'] 与 RankHub 一致; 传 Legacy 成绩可以,但不参与最佳桶合计。

那些「搬不过来」的东西

  • TapTap 云存档协议(LeanCloud X-LC-Id/X-LC-Session、AES 解密):RankHub 不接存档抓取, 它只收你已经解析好的成绩;
  • bot 层((e, …) 事件、Redis 绑定、渲染发图、指令权限):v1 是 HTTP API,没有这些概念;
  • sessionToken 是凭据不是身份,不要塞进 objectId。

下一步

本页内容

官方交流群二维码官方交流群问题反馈 · 版本资讯 · 成绩交流群号 1073434398