koishi-plugin-maibot 1.7.69 → 1.7.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -115
- package/lib/api.d.ts +5 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +45 -26
- package/lib/api.js.map +1 -1
- package/lib/binding-verify.d.ts +15 -2
- package/lib/binding-verify.d.ts.map +1 -1
- package/lib/binding-verify.js +28 -8
- package/lib/binding-verify.js.map +1 -1
- package/lib/index.d.ts +8 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +543 -463
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
# koishi-plugin-maibot
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
舞萌 DX 相关功能的 Koishi 插件(绑定、状态、B50 上传、票券查询等)。
|
|
4
|
+
|
|
5
|
+
## 公共 API 与文档链接
|
|
6
|
+
|
|
7
|
+
- **申请 API / 令牌**:[https://api.awmc.cc](https://api.awmc.cc)
|
|
8
|
+
- **购买额度**:[https://store.awmc.cc](https://store.awmc.cc)
|
|
9
|
+
- **开放接口与计费说明(在线)**:[https://wiki.awmc.cc/dev/awmc-api](https://wiki.awmc.cc/dev/awmc-api) · 仓库内 [`awmc-api.md`](./awmc-api.md) 为摘要(默认网关 `https://api.awmc.cc`)
|
|
10
|
+
|
|
11
|
+
使用公共网关时,在插件配置中将 **apiMode** 设为 `public`,填写 **publicGatewayToken**,并将 **apiBaseURL** 设为 `https://api.awmc.cc`(或提供方给出的网关根地址)。无需配置 **machineInfo**、**turnstileToken**。若接口返回 **403**,多为账户 Token 余额不足,请到 [store.awmc.cc](https://store.awmc.cc) 充值后再试。
|
|
12
|
+
|
|
13
|
+
更完整的安装步骤、进阶功能与排错说明请见 **项目 Wiki**(GitHub 仓库主页文档区)。
|
|
5
14
|
|
|
6
15
|
## 功能特性
|
|
7
16
|
|
|
8
17
|
- ✅ 用户绑定(通过 SGWCMAID 二维码)
|
|
9
18
|
- ✅ 用户解绑
|
|
10
|
-
- ✅
|
|
11
|
-
- ✅ 水鱼Token
|
|
12
|
-
- ✅ B50
|
|
13
|
-
- ✅
|
|
14
|
-
- ✅
|
|
15
|
-
- ✅
|
|
16
|
-
- ✅ 收藏品管理(获取收藏品/清收藏品,支持交互式选择类别、ID 与数量)
|
|
17
|
-
- ✅ 功能票管理(发票/清票)
|
|
18
|
-
- ✅ 账号状态提醒(自动检测登录状态变化并群内通知)
|
|
19
|
-
- ✅ 用户ID隐藏显示(防止盗号)
|
|
20
|
-
- ✅ 完整的 API 调用封装
|
|
19
|
+
- ✅ 状态查询(含票券查询等,取决于所选 API 模式)
|
|
20
|
+
- ✅ 水鱼 Token 绑定/解绑与 B50 上传
|
|
21
|
+
- ✅ 落雪代码绑定/解绑与 B50 上传
|
|
22
|
+
- ✅ B50 任务状态轮询与提示
|
|
23
|
+
- ✅ 按配置可选:发票、收藏品、改版本号等(仅 **团队内部 / 自建 API** 模式)
|
|
24
|
+
- ✅ 账号状态提醒、用户 ID 掩码、操作日志等
|
|
21
25
|
- ✅ 数据库存储(SQLite/MySQL/PostgreSQL)
|
|
22
26
|
|
|
23
27
|
## 安装
|
|
@@ -26,141 +30,78 @@
|
|
|
26
30
|
npm install koishi-plugin-maibot
|
|
27
31
|
```
|
|
28
32
|
|
|
29
|
-
##
|
|
33
|
+
## 配置概要
|
|
30
34
|
|
|
31
|
-
在 `koishi.yml`
|
|
35
|
+
在 `koishi.yml` 中(字段以控制台表单为准):
|
|
36
|
+
|
|
37
|
+
**公共网关示例:**
|
|
32
38
|
|
|
33
39
|
```yaml
|
|
34
40
|
plugins:
|
|
35
41
|
maibot:
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
clientId: 你的客户端ID
|
|
40
|
-
regionId: 你的区域ID
|
|
41
|
-
placeId: 你的场所ID
|
|
42
|
-
placeName: 你的场所名称
|
|
43
|
-
regionName: 你的区域名称
|
|
44
|
-
turnstileToken: 你的Turnstile Token # 必填
|
|
45
|
-
alertMessages: # 可选,账号状态提醒消息配置
|
|
46
|
-
loginMessage: '{playerid}{at} 你的账号已上线。' # 上线消息(支持占位符:{playerid} 玩家名,{at} @用户)
|
|
47
|
-
logoutMessage: '{playerid}{at} 你的账号已下线。' # 下线消息
|
|
42
|
+
apiMode: public
|
|
43
|
+
apiBaseURL: https://api.awmc.cc
|
|
44
|
+
publicGatewayToken: <在 api.awmc.cc 获取的令牌>
|
|
48
45
|
```
|
|
49
46
|
|
|
50
|
-
|
|
47
|
+
**自建 / 团队内部服务示例:**
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
plugins:
|
|
51
|
+
maibot:
|
|
52
|
+
apiMode: team
|
|
53
|
+
apiBaseURL: http://你的服务:端口
|
|
54
|
+
machineInfo:
|
|
55
|
+
clientId: ...
|
|
56
|
+
regionId: ...
|
|
57
|
+
placeId: ...
|
|
58
|
+
placeName: ...
|
|
59
|
+
regionName: ...
|
|
60
|
+
turnstileToken: ...
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
未显式填写 **apiMode** 时默认为 `team`,与旧版配置兼容;仅当你明确使用公共网关时才设为 `public`。
|
|
51
64
|
|
|
52
65
|
### 跨平台绑定(推荐)
|
|
53
66
|
|
|
54
|
-
如需在多个平台(QQ/Discord/Telegram 等)共享同一份绑定数据,建议同时启用 Koishi 官方 `bind`
|
|
55
|
-
本插件会优先使用 bind 统一后的用户 ID 保存绑定信息,并兼容历史的平台原始 ID 数据。
|
|
67
|
+
如需在多个平台(QQ/Discord/Telegram 等)共享同一份绑定数据,建议同时启用 Koishi 官方 `bind` 插件。本插件会优先使用 bind 统一后的用户 ID,并兼容历史的平台原始 ID。
|
|
56
68
|
|
|
57
69
|
### 群白名单跨平台配置
|
|
58
70
|
|
|
59
71
|
`whitelist.targets` 支持 `platform:guildId` 格式(例如 `qq:1072033605`、`discord:1234567890`),也支持仅填写 `guildId`(兼容旧配置)。
|
|
60
72
|
|
|
61
|
-
##
|
|
73
|
+
## 使用(节选)
|
|
62
74
|
|
|
63
75
|
### 绑定账号
|
|
64
|
-
```
|
|
65
|
-
/mai绑定 SGWCMAIDxxxxxxxxxxxxx
|
|
66
|
-
```
|
|
67
76
|
|
|
68
|
-
### 查询状态(自动更新用户名和Rating)
|
|
69
|
-
```
|
|
70
|
-
/mai状态
|
|
71
77
|
```
|
|
72
|
-
|
|
73
|
-
### 解绑账号
|
|
74
|
-
```
|
|
75
|
-
/mai解绑
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 绑定水鱼Token
|
|
79
|
-
```
|
|
80
|
-
/mai绑定水鱼 <token>
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### 解绑水鱼Token
|
|
84
|
-
```
|
|
85
|
-
/mai解绑水鱼
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 上传B50到水鱼
|
|
89
|
-
```
|
|
90
|
-
/mai上传B50
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### 查询B50任务状态(水鱼)
|
|
94
|
-
```
|
|
95
|
-
/mai查询B50
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### 绑定落雪代码
|
|
99
|
-
```
|
|
100
|
-
/mai绑定落雪 <lxns_code>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### 解绑落雪代码
|
|
104
|
-
```
|
|
105
|
-
/mai解绑落雪
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 上传B50到落雪
|
|
109
|
-
```
|
|
110
|
-
/mai上传落雪b50 # 使用绑定的代码
|
|
111
|
-
/mai上传落雪b50 <code> # 使用临时代码
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 查询落雪B50任务状态
|
|
115
|
-
```
|
|
116
|
-
/mai查询落雪B50
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### 获取收藏品
|
|
120
|
-
```
|
|
121
|
-
/mai获取收藏品
|
|
78
|
+
/mai绑定 SGWCMAIDxxxxxxxxxxxxx
|
|
122
79
|
```
|
|
123
|
-
或使用别名 `/mai发收藏品`。交互式选择收藏品类别、ID 与数量(支持头像框、称号、头像、乐曲、解锁 Master 等类型)。
|
|
124
80
|
|
|
125
|
-
###
|
|
126
|
-
```
|
|
127
|
-
/mai清收藏品
|
|
128
|
-
```
|
|
129
|
-
交互式选择收藏品类别和ID进行清空
|
|
81
|
+
### 查询状态
|
|
130
82
|
|
|
131
|
-
### 发票(2-6倍)
|
|
132
83
|
```
|
|
133
|
-
/mai
|
|
84
|
+
/mai状态
|
|
134
85
|
```
|
|
135
86
|
|
|
136
|
-
###
|
|
137
|
-
```
|
|
138
|
-
/mai清票
|
|
139
|
-
```
|
|
87
|
+
### 帮助
|
|
140
88
|
|
|
141
|
-
### 账号状态提醒
|
|
142
89
|
```
|
|
143
|
-
/
|
|
144
|
-
/
|
|
90
|
+
/mai
|
|
91
|
+
/mai帮助
|
|
92
|
+
/mai帮助 --advanced
|
|
145
93
|
```
|
|
146
94
|
|
|
147
|
-
|
|
148
|
-
- 默认关闭,需要用户主动开启
|
|
149
|
-
- 每1分钟自动检查一次登录状态
|
|
150
|
-
- 当账号从离线变为在线时,会在群内发送上线提醒
|
|
151
|
-
- 当账号从在线变为离线时,会在群内发送下线提醒
|
|
152
|
-
- 仅在状态变化时发送,避免刷屏
|
|
153
|
-
- 支持自定义消息格式(在配置文件中设置)
|
|
95
|
+
公共 API 模式下,`--advanced` 会说明哪些功能仅在 `team` 模式下可用。
|
|
154
96
|
|
|
155
|
-
|
|
97
|
+
更多子命令见游戏内帮助或 Wiki。
|
|
156
98
|
|
|
157
|
-
|
|
99
|
+
## API 说明
|
|
158
100
|
|
|
159
|
-
|
|
160
|
-
- `POST /api/qr2userid/<qr_text>` - 二维码转用户ID
|
|
161
|
-
- `GET /api/preview?mai_uid=<encrypted_uid>` - 用户状态预览
|
|
101
|
+
本插件通过 HTTP 调用后端网关:
|
|
162
102
|
|
|
163
|
-
|
|
103
|
+
- **apiMode: public** 时,使用网关的 **`/v1/...`** 路径,请求头携带 `Authorization: Bearer <令牌>`,详见 [Wiki 文档](https://wiki.awmc.cc/dev/awmc-api) 或 [`awmc-api.md`](./awmc-api.md)。
|
|
104
|
+
- **apiMode: team** 时,使用自建服务上既有路径(如 `/api/public/...` 等),与历史部署一致。
|
|
164
105
|
|
|
165
106
|
## 许可证
|
|
166
107
|
|
package/lib/api.d.ts
CHANGED
|
@@ -3,11 +3,16 @@ export interface ApiConfig {
|
|
|
3
3
|
timeout?: number;
|
|
4
4
|
retryCount?: number;
|
|
5
5
|
retryDelay?: number;
|
|
6
|
+
/** team:自建服务 `/api/public`;public:AWMC 网关 `/v1` + Bearer */
|
|
7
|
+
apiStyle?: 'team' | 'public';
|
|
8
|
+
/** apiStyle 为 public 时必填,对应网关 `Authorization: Bearer <令牌>` */
|
|
9
|
+
bearerToken?: string;
|
|
6
10
|
}
|
|
7
11
|
export declare class MaiBotAPI {
|
|
8
12
|
private client;
|
|
9
13
|
private retryCount;
|
|
10
14
|
private retryDelay;
|
|
15
|
+
private apiStyle;
|
|
11
16
|
constructor(config: ApiConfig);
|
|
12
17
|
private setupRetry;
|
|
13
18
|
/**
|
package/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/api.js
CHANGED
|
@@ -9,12 +9,17 @@ class MaiBotAPI {
|
|
|
9
9
|
constructor(config) {
|
|
10
10
|
this.retryCount = config.retryCount ?? 5;
|
|
11
11
|
this.retryDelay = config.retryDelay ?? 1000;
|
|
12
|
+
this.apiStyle = config.apiStyle ?? 'team';
|
|
13
|
+
const headers = {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
};
|
|
16
|
+
if (this.apiStyle === 'public' && config.bearerToken) {
|
|
17
|
+
headers.Authorization = `Bearer ${config.bearerToken}`;
|
|
18
|
+
}
|
|
12
19
|
this.client = axios_1.default.create({
|
|
13
20
|
baseURL: config.baseURL || 'http://localhost:5566',
|
|
14
21
|
timeout: config.timeout || 30000,
|
|
15
|
-
headers
|
|
16
|
-
'Content-Type': 'application/json',
|
|
17
|
-
},
|
|
22
|
+
headers,
|
|
18
23
|
});
|
|
19
24
|
this.setupRetry();
|
|
20
25
|
}
|
|
@@ -41,7 +46,8 @@ class MaiBotAPI {
|
|
|
41
46
|
* GET /api/public/mai_ping
|
|
42
47
|
*/
|
|
43
48
|
async maiPing() {
|
|
44
|
-
const
|
|
49
|
+
const path = this.apiStyle === 'public' ? '/v1/mai_ping' : '/api/public/mai_ping';
|
|
50
|
+
const response = await this.client.get(path);
|
|
45
51
|
return response.data;
|
|
46
52
|
}
|
|
47
53
|
/**
|
|
@@ -50,12 +56,11 @@ class MaiBotAPI {
|
|
|
50
56
|
* 需要: client_id, qr_text
|
|
51
57
|
*/
|
|
52
58
|
async getPreview(clientId, qrText) {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
59
|
+
const path = this.apiStyle === 'public' ? '/v1/get_preview' : '/api/public/get_preview';
|
|
60
|
+
const params = this.apiStyle === 'public'
|
|
61
|
+
? { qr_text: qrText }
|
|
62
|
+
: { client_id: clientId, qr_text: qrText };
|
|
63
|
+
const response = await this.client.get(path, { params });
|
|
59
64
|
return response.data;
|
|
60
65
|
}
|
|
61
66
|
/**
|
|
@@ -64,15 +69,17 @@ class MaiBotAPI {
|
|
|
64
69
|
* 需要: region_id, client_id, place_id, qr_text, fish_token
|
|
65
70
|
*/
|
|
66
71
|
async uploadB50(regionId, clientId, placeId, qrText, fishToken) {
|
|
67
|
-
const
|
|
68
|
-
|
|
72
|
+
const path = this.apiStyle === 'public' ? '/v1/upload_b50' : '/api/public/upload_b50';
|
|
73
|
+
const params = this.apiStyle === 'public'
|
|
74
|
+
? { qr_text: qrText, fish_token: fishToken }
|
|
75
|
+
: {
|
|
69
76
|
region_id: regionId,
|
|
70
77
|
client_id: clientId,
|
|
71
78
|
place_id: placeId,
|
|
72
79
|
qr_text: qrText,
|
|
73
80
|
fish_token: fishToken,
|
|
74
|
-
}
|
|
75
|
-
});
|
|
81
|
+
};
|
|
82
|
+
const response = await this.client.post(path, null, { params });
|
|
76
83
|
return response.data;
|
|
77
84
|
}
|
|
78
85
|
/**
|
|
@@ -81,7 +88,8 @@ class MaiBotAPI {
|
|
|
81
88
|
* 需要: mai_uid (加密的用户ID)
|
|
82
89
|
*/
|
|
83
90
|
async getB50TaskStatus(maiUid) {
|
|
84
|
-
const
|
|
91
|
+
const path = this.apiStyle === 'public' ? '/v1/get_b50_task_status' : '/api/public/get_b50_task_status';
|
|
92
|
+
const response = await this.client.get(path, {
|
|
85
93
|
params: { mai_uid: maiUid },
|
|
86
94
|
});
|
|
87
95
|
return response.data;
|
|
@@ -94,7 +102,8 @@ class MaiBotAPI {
|
|
|
94
102
|
* @param timeout 可选的请求超时时间(毫秒)
|
|
95
103
|
*/
|
|
96
104
|
async getB50TaskById(taskId, timeout) {
|
|
97
|
-
const
|
|
105
|
+
const path = this.apiStyle === 'public' ? '/v1/get_b50_task_byid' : '/api/public/get_b50_task_byid';
|
|
106
|
+
const response = await this.client.get(path, {
|
|
98
107
|
params: { task_id: taskId },
|
|
99
108
|
...(timeout ? { timeout } : {}),
|
|
100
109
|
});
|
|
@@ -106,15 +115,17 @@ class MaiBotAPI {
|
|
|
106
115
|
* 需要: region_id, client_id, place_id, qr_text, lxns_code
|
|
107
116
|
*/
|
|
108
117
|
async uploadLxB50(regionId, clientId, placeId, qrText, lxnsCode) {
|
|
109
|
-
const
|
|
110
|
-
|
|
118
|
+
const path = this.apiStyle === 'public' ? '/v1/upload_lx_b50' : '/api/public/upload_lx_b50';
|
|
119
|
+
const params = this.apiStyle === 'public'
|
|
120
|
+
? { qr_text: qrText, lxns_code: lxnsCode }
|
|
121
|
+
: {
|
|
111
122
|
region_id: regionId,
|
|
112
123
|
client_id: clientId,
|
|
113
124
|
place_id: placeId,
|
|
114
125
|
qr_text: qrText,
|
|
115
126
|
lxns_code: lxnsCode,
|
|
116
|
-
}
|
|
117
|
-
});
|
|
127
|
+
};
|
|
128
|
+
const response = await this.client.post(path, null, { params });
|
|
118
129
|
return response.data;
|
|
119
130
|
}
|
|
120
131
|
/**
|
|
@@ -123,7 +134,10 @@ class MaiBotAPI {
|
|
|
123
134
|
* 需要: mai_uid (加密的用户ID)
|
|
124
135
|
*/
|
|
125
136
|
async getLxB50TaskStatus(maiUid) {
|
|
126
|
-
const
|
|
137
|
+
const path = this.apiStyle === 'public'
|
|
138
|
+
? '/v1/get_lx_b50_task_status'
|
|
139
|
+
: '/api/public/get_lx_b50_task_status';
|
|
140
|
+
const response = await this.client.get(path, {
|
|
127
141
|
params: { mai_uid: maiUid },
|
|
128
142
|
});
|
|
129
143
|
return response.data;
|
|
@@ -136,7 +150,10 @@ class MaiBotAPI {
|
|
|
136
150
|
* @param timeout 可选的请求超时时间(毫秒)
|
|
137
151
|
*/
|
|
138
152
|
async getLxB50TaskById(taskId, timeout) {
|
|
139
|
-
const
|
|
153
|
+
const path = this.apiStyle === 'public'
|
|
154
|
+
? '/v1/get_lx_b50_task_byid'
|
|
155
|
+
: '/api/public/get_lx_b50_task_byid';
|
|
156
|
+
const response = await this.client.get(path, {
|
|
140
157
|
params: { task_id: taskId },
|
|
141
158
|
...(timeout ? { timeout } : {}),
|
|
142
159
|
});
|
|
@@ -209,14 +226,16 @@ class MaiBotAPI {
|
|
|
209
226
|
* 需要: region_id, client_id, place_id, qr_text
|
|
210
227
|
*/
|
|
211
228
|
async getCharge(regionId, clientId, placeId, qrText) {
|
|
212
|
-
const
|
|
213
|
-
|
|
229
|
+
const path = this.apiStyle === 'public' ? '/v1/get_charge' : '/api/public/get_charge';
|
|
230
|
+
const params = this.apiStyle === 'public'
|
|
231
|
+
? { qr_text: qrText }
|
|
232
|
+
: {
|
|
214
233
|
region_id: regionId,
|
|
215
234
|
client_id: clientId,
|
|
216
235
|
place_id: placeId,
|
|
217
236
|
qr_text: qrText,
|
|
218
|
-
}
|
|
219
|
-
});
|
|
237
|
+
};
|
|
238
|
+
const response = await this.client.get(path, { params });
|
|
220
239
|
return response.data;
|
|
221
240
|
}
|
|
222
241
|
/**
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA4C;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/binding-verify.d.ts
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import type { UserBinding } from './database';
|
|
2
2
|
export declare function normalizePreviewUserId(userId: string | number): string;
|
|
3
|
+
/** 老版本密钥存库的 maiUid 常见以 Base64 前缀 MDk(即 ASCII「097…」)开头 */
|
|
4
|
+
export declare function isLegacyMdkMaiUid(boundUid: string): boolean;
|
|
5
|
+
export type VerifyPreviewBindingResult = {
|
|
6
|
+
ok: true;
|
|
7
|
+
} | {
|
|
8
|
+
ok: false;
|
|
9
|
+
message: string;
|
|
10
|
+
} | {
|
|
11
|
+
ok: true;
|
|
12
|
+
migratedToUid: string;
|
|
13
|
+
notice: string;
|
|
14
|
+
};
|
|
3
15
|
/**
|
|
4
|
-
* 校验 preview
|
|
16
|
+
* 校验 preview 与绑定是否为同一街机账号:比较绑定记录的 maiUid 与二维码 preview 的 UserID。
|
|
17
|
+
* 绑定为老格式(maiUid 以 MDk 开头)且与二维码 UID 不一致时,视为同账号升级格式,返回 ok + 迁移信息(由调用方写库并提示)。
|
|
5
18
|
*/
|
|
6
19
|
export declare function verifyPreviewMatchesBinding(binding: UserBinding, preview: {
|
|
7
20
|
UserID: string | number;
|
|
8
21
|
UserName?: string;
|
|
9
|
-
}):
|
|
22
|
+
}): VerifyPreviewBindingResult;
|
|
10
23
|
/** lastStateAt:maibot_user_rebind_state.lastBindChangeAt;bindTime:当前绑定记录的 bindTime(无绑定则 0) */
|
|
11
24
|
export declare function msUntilBindChangeAllowed(lastStateAtMs: number, bindTimeMs: number, minIntervalDays: number): number;
|
|
12
25
|
export declare function formatBindChangeWaitHuman(ms: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-verify.d.ts","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEtE;AAED
|
|
1
|
+
{"version":3,"file":"binding-verify.d.ts","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEtE;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9B;IACE,EAAE,EAAE,IAAI,CAAA;IACR,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAEL;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,0BAA0B,CA4B5B;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS5D"}
|
package/lib/binding-verify.js
CHANGED
|
@@ -1,27 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizePreviewUserId = normalizePreviewUserId;
|
|
4
|
+
exports.isLegacyMdkMaiUid = isLegacyMdkMaiUid;
|
|
4
5
|
exports.verifyPreviewMatchesBinding = verifyPreviewMatchesBinding;
|
|
5
6
|
exports.msUntilBindChangeAllowed = msUntilBindChangeAllowed;
|
|
6
7
|
exports.formatBindChangeWaitHuman = formatBindChangeWaitHuman;
|
|
7
8
|
function normalizePreviewUserId(userId) {
|
|
8
9
|
return String(userId);
|
|
9
10
|
}
|
|
11
|
+
/** 老版本密钥存库的 maiUid 常见以 Base64 前缀 MDk(即 ASCII「097…」)开头 */
|
|
12
|
+
function isLegacyMdkMaiUid(boundUid) {
|
|
13
|
+
return String(boundUid).startsWith('MDk');
|
|
14
|
+
}
|
|
10
15
|
/**
|
|
11
|
-
* 校验 preview
|
|
16
|
+
* 校验 preview 与绑定是否为同一街机账号:比较绑定记录的 maiUid 与二维码 preview 的 UserID。
|
|
17
|
+
* 绑定为老格式(maiUid 以 MDk 开头)且与二维码 UID 不一致时,视为同账号升级格式,返回 ok + 迁移信息(由调用方写库并提示)。
|
|
12
18
|
*/
|
|
13
19
|
function verifyPreviewMatchesBinding(binding, preview) {
|
|
14
20
|
const pid = normalizePreviewUserId(preview.UserID);
|
|
15
21
|
if (pid === '-1' || preview.UserID === -1) {
|
|
16
|
-
return '❌ 无效或过期的二维码,无法完成验证。请重新获取玩家二维码后重试。';
|
|
22
|
+
return { ok: false, message: '❌ 无效或过期的二维码,无法完成验证。请重新获取玩家二维码后重试。' };
|
|
17
23
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`• 当前二维码对应的 UID:${pid}\n` +
|
|
22
|
-
`若您已更换游戏账号,请使用 /mai解绑 后重新绑定(换绑冷却期内请使用 /mai解绑卡)。`);
|
|
24
|
+
const boundUid = String(binding.maiUid);
|
|
25
|
+
if (boundUid === pid) {
|
|
26
|
+
return { ok: true };
|
|
23
27
|
}
|
|
24
|
-
|
|
28
|
+
if (isLegacyMdkMaiUid(boundUid)) {
|
|
29
|
+
return {
|
|
30
|
+
ok: true,
|
|
31
|
+
migratedToUid: pid,
|
|
32
|
+
notice: `💾 街机账号 UID 不一致:\n` +
|
|
33
|
+
`• 当前绑定记录的 UID:${boundUid}\n` +
|
|
34
|
+
`• 当前二维码对应的 UID:${pid}\n` +
|
|
35
|
+
`已为您自动迁移到新格式。`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
ok: false,
|
|
40
|
+
message: `❌ 街机账号 UID 不一致:\n` +
|
|
41
|
+
`• 当前绑定记录的 UID:${boundUid}\n` +
|
|
42
|
+
`• 当前二维码对应的 UID:${pid}\n` +
|
|
43
|
+
`若您已更换游戏账号,请使用 /mai解绑 后重新绑定(换绑冷却期内请使用 /mai解绑卡)。`,
|
|
44
|
+
};
|
|
25
45
|
}
|
|
26
46
|
/** lastStateAt:maibot_user_rebind_state.lastBindChangeAt;bindTime:当前绑定记录的 bindTime(无绑定则 0) */
|
|
27
47
|
function msUntilBindChangeAllowed(lastStateAtMs, bindTimeMs, minIntervalDays) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-verify.js","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":";;AAEA,wDAEC;
|
|
1
|
+
{"version":3,"file":"binding-verify.js","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -11,11 +11,17 @@ export interface MachineInfo {
|
|
|
11
11
|
}
|
|
12
12
|
export interface Config {
|
|
13
13
|
apiBaseURL: string;
|
|
14
|
+
/** team:自建/团队内部网关;public:AWMC 公共网关(/v1 + Bearer,见 awmc-api.md) */
|
|
15
|
+
apiMode?: 'team' | 'public';
|
|
16
|
+
/** apiMode 为 public 时必填,登录 https://api.awmc.cc 获取 gw_ / JWT 令牌 */
|
|
17
|
+
publicGatewayToken?: string;
|
|
14
18
|
apiTimeout?: number;
|
|
15
19
|
apiRetryCount?: number;
|
|
16
20
|
apiRetryDelay?: number;
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
/** team 模式必填;public 模式可省略(仅用占位,不参与网关请求) */
|
|
22
|
+
machineInfo?: MachineInfo;
|
|
23
|
+
/** team 模式必填;public 模式可省略 */
|
|
24
|
+
turnstileToken?: string;
|
|
19
25
|
maintenanceNotice?: {
|
|
20
26
|
enabled: boolean;
|
|
21
27
|
startHour: number;
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAW,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|