Drincann / Mirai-js

运行在 Node.js、浏览器下,基于 mirai-api-http 的 QQ 机器人开发框架。
https://mirai-js-drincann.vercel.app
GNU Affero General Public License v3.0
252 stars 31 forks source link

fix: groupPermission 的类型语义问题 #213 #214

Closed Mantou1233 closed 2 years ago

Mantou1233 commented 2 years ago

213

vercel[bot] commented 2 years ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Ignored Deployment | Name | Status | Preview | Updated | | :--- | :----- | :------ | :------ | | **mirai-js** | ⬜️ Ignored ([Inspect](https://vercel.com/drincann/mirai-js/3MksDqLwfmXAWEhucq5ftpaqNWwd)) | | Jul 29, 2022 at 1:07PM (UTC) |
FurryR commented 2 years ago

反对:Bot.d.ts仅作类型提示用,更改为实际字面量或类型并不会导致程序逻辑异常。

同意:在src/core下检测到了和本pr相同的错误,等一下我会再开一个PR修正错误。

Drincann commented 2 years ago

反对:Bot.d.ts仅作类型提示用,更改为实际字面量或类型并不会导致程序逻辑异常。

同意:在src/core下检测到了和本pr相同的错误,等一下我会再开一个PR修正错误。

@FurryR ,你说的相同的错误应该是指,前一段时间的 pr closed 后没同步这个仓库导致的修改夹带,这些夹带的地方主要是为了适配 api 的新结构,这部分逻辑该改的地方已经改过了,目前不需要修改。

这个 pr 主要是为了解决 GroupPermission 的问题,在 ts 中 type checker 会认为 groupPermission.ADMIN 有三种值,这实际上是有问题的。

FurryR commented 2 years ago

反对:Bot.d.ts仅作类型提示用,更改为实际字面量或类型并不会导致程序逻辑异常。 同意:在src/core下检测到了和本pr相同的错误,等一下我会再开一个PR修正错误。

@FurryR ,你说的相同的错误应该是指,前一段时间的 pr closed 后没同步这个仓库导致的修改夹带,这些夹带的地方主要是为了适配 api 的新结构,这部分逻辑该改的地方已经改过了,目前不需要修改。

这个 pr 主要是为了解决 GroupPermission 的问题,在 ts 中 type checker 会认为 groupPermission.ADMIN 有三种值,这实际上是有问题的。

@Drincann 应该是这样。但是最新版仍有一个core内的内容错误套用2层data(axios加注type lint后报错)。 我已经尝试npm update,但问题依旧存在,所以请至少review一遍。

Drincann commented 2 years ago

@FurryR 具体描述一下报错的复现步骤。

FurryR commented 2 years ago

mah v1 GET /config 这个接口很可能返回了 {data: any, code: number, msg: string}

请问在 mah v1 下测过了吗。

如果_getSessionConfig是为了兼容旧版本mirai-api-http而留下的东西,那么就可以close我的pr了。 但是新版并不存在/config API,故可能应当将_getSessionConfig标上@deprecated或完全删除此方法。 这是原代码:

var {
  data: { data: { msg: message, code, cacheSize, enableWebsocket } },
} = responseData;

则data的数据格式会如下方所示。

{
  "data":{
    "message":"",
    "code":0,
    "cacheSize":0,
    "enableWebsocket":true
  }
}

在我的修正过后,json变成了以下格式:

{
  "message":"",
  "code":0,
  "cacheSize":0,
  "enableWebsocket":true
}

而这和提到的{data: any, code: number, msg: string}虽然可能有部分偏差,但前者无疑是错误的。

Drincann commented 2 years ago

@FurryR 主要是我不知道你测了没有,我抽时间测一下看看吧。