指令能用,但每条都要我手输 ID
插件装好、接口也通了,但每次查战绩要发:
王者战绩 230856479
那串数字是营地 ID。我自己都记不住,群里的别人更记不住——查一次要先去别的地方翻自己的 ID。
功能是能用的,但每次使用都要付一次"准备成本",这个成本高到会让人不用它。
改成绑定一次
核心改动是把 ID 从"每次输入"变成"配置一次":
- 新增一条绑定指令,用户发一次自己的营地 ID,存下来
- 之后所有查询指令都不带 ID,插件按发消息的 QQ 号去查对应的绑定
一句话:把参数从指令里挪到配置里。
改动之后指令长这样:
王者战绩
王者战绩 排位 ← 只保留"模式"这类每次确实会变的参数
顺手清理的几处
既然是重做,把攒下来的问题一并处理了:
删掉冗余指令。 原来有"角色添加 / 角色修改 / 角色删除 / 角色查询"四条,但用户的操作其实只有一次——绑定。四条指令围着一次操作转,反而增加了理解成本。删掉,只留绑定。
参数从"每次变"和"基本不变"里分开。 ID 属于基本不变(挪进绑定),对局模式属于每次可能变(留在指令里)。一刀切地全删或全留都不对。
指令名和示例合并。 帮助菜单里原来一项占两行(名字一行、示例一行),显得冗长。直接把示例当名字用:
王者战绩
王者锐评
王者今日
反正用户记的就是怎么发,不是指令叫什么名字。
加时间维度的功能。 原来只能看历史最佳,加了"今日战绩"(今天的胜率和每局结果)和"详细对局查看"。
一个放错位置的配置
有个细节值得单独提:当时那个"官方营地 userId"被放在了插件的前端配置里。
这个位置是错的。前端配置是全局的——所有用户共用一份。把某个用户的 ID 放进去,意味着所有人查出来的都是那个人的数据。
这个 bug 后来确实出现了(见另一篇:别人绑定了账号,查出来的还是我的战绩)。
一个参数的归属,取决于它的作用域。 每个人的东西放在每个人的存储里,全局配置只放全局的东西。这个区分在做功能的时候很容易被忽略——因为功能是"一个人用的",自然就顺手写进了配置。
判断标准
回头看这次重做,有一条很简单的判断标准:
如果用户每次用这个功能都要手动输入同一串东西,那它就应该被记住。
不管是 ID、路径、还是别的什么固定参数。让用户重复输入不变的东西,是功能设计上的偷懒——因为它把"存储状态"的麻烦转嫁给了使用者。