koishi-plugin-maibot 1.0.0
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 +60 -0
- package/lib/api.d.ts +97 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/api.js +130 -0
- package/lib/api.js.map +1 -0
- package/lib/database.d.ts +17 -0
- package/lib/database.d.ts.map +1 -0
- package/lib/database.js +20 -0
- package/lib/database.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +160 -0
- package/lib/index.js.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# koishi-plugin-maibot
|
|
2
|
+
|
|
3
|
+
舞萌DX游戏高级操作插件 for Koishi
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- ✅ 用户绑定(通过 SGWCMAID 二维码)
|
|
8
|
+
- ✅ 用户解绑
|
|
9
|
+
- ✅ 状态查询(实时获取账号信息)
|
|
10
|
+
- ✅ 完整的 API 调用封装
|
|
11
|
+
- ✅ 数据库存储(SQLite/MySQL/PostgreSQL)
|
|
12
|
+
|
|
13
|
+
## 安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install koishi-plugin-maibot
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 配置
|
|
20
|
+
|
|
21
|
+
在 `koishi.yml` 中配置:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
plugins:
|
|
25
|
+
maibot:
|
|
26
|
+
apiBaseURL: http://localhost:5566 # 你的API服务地址
|
|
27
|
+
apiTimeout: 30000 # 可选,默认30秒
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 使用
|
|
31
|
+
|
|
32
|
+
### 绑定账号
|
|
33
|
+
```
|
|
34
|
+
/mai绑定 SGWCMAIDxxxxxxxxxxxxx
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 查询状态
|
|
38
|
+
```
|
|
39
|
+
/mai状态
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 解绑账号
|
|
43
|
+
```
|
|
44
|
+
/mai解绑
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## API 要求
|
|
48
|
+
|
|
49
|
+
本插件需要配合 [anti15-api](https://github.com/your-repo/anti15-api) 使用。
|
|
50
|
+
|
|
51
|
+
API 服务需要提供以下接口:
|
|
52
|
+
- `POST /api/qr2userid/<qr_text>` - 二维码转用户ID
|
|
53
|
+
- `GET /api/preview?mai_uid=<encrypted_uid>` - 用户状态预览
|
|
54
|
+
|
|
55
|
+
更多 API 文档请参考 API README。
|
|
56
|
+
|
|
57
|
+
## 许可证
|
|
58
|
+
|
|
59
|
+
MIT
|
|
60
|
+
|
package/lib/api.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
export interface ApiConfig {
|
|
2
|
+
baseURL: string;
|
|
3
|
+
timeout?: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class MaiBotAPI {
|
|
6
|
+
private client;
|
|
7
|
+
constructor(config: ApiConfig);
|
|
8
|
+
/**
|
|
9
|
+
* 二维码转用户ID
|
|
10
|
+
*/
|
|
11
|
+
qr2userid(qrText: string): Promise<{
|
|
12
|
+
QRStatus: boolean;
|
|
13
|
+
UserID: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* 用户状态预览
|
|
17
|
+
*/
|
|
18
|
+
preview(maiUid: string): Promise<{
|
|
19
|
+
UserID: string;
|
|
20
|
+
BanState: string;
|
|
21
|
+
IsLogin: string;
|
|
22
|
+
LastLoginDate: string;
|
|
23
|
+
LastPlayDate: string;
|
|
24
|
+
Rating: string;
|
|
25
|
+
UserName: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* 用户登出
|
|
29
|
+
*/
|
|
30
|
+
logout(maiUid: string, regionId: string, clientId: string, placeId: string, token: string): Promise<{
|
|
31
|
+
LogoutStatus: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* 获取1.5倍票
|
|
35
|
+
*/
|
|
36
|
+
get15Ticket(maiUid: string, clientId: string, regionId: number, placeId: number, placeName: string, regionName: string, token: string): Promise<{
|
|
37
|
+
LoginStatus: boolean;
|
|
38
|
+
LogoutStatus: boolean;
|
|
39
|
+
UserAllStatus: boolean;
|
|
40
|
+
UserLogStatus: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* 上传水鱼 B50
|
|
44
|
+
*/
|
|
45
|
+
uploadB50(maiUid: string, fishToken: string): Promise<{
|
|
46
|
+
UploadStatus: boolean;
|
|
47
|
+
msg: string;
|
|
48
|
+
task_id: string;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* 查询水鱼 B50 任务状态
|
|
52
|
+
*/
|
|
53
|
+
getB50TaskStatus(maiUid: string): Promise<{
|
|
54
|
+
code: number;
|
|
55
|
+
alive_task_id: string;
|
|
56
|
+
alive_task_time: string;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* 根据ID查询水鱼 B50 任务
|
|
60
|
+
*/
|
|
61
|
+
getB50TaskById(taskId: string): Promise<{
|
|
62
|
+
code: number;
|
|
63
|
+
alive_task_id: string;
|
|
64
|
+
alive_task_time: string;
|
|
65
|
+
alive_task_end_time?: string;
|
|
66
|
+
error?: string;
|
|
67
|
+
done: boolean;
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* 上传落雪 B50
|
|
71
|
+
*/
|
|
72
|
+
uploadLxB50(maiUid: string, lxnsCode: string): Promise<{
|
|
73
|
+
UploadStatus: boolean;
|
|
74
|
+
msg: string;
|
|
75
|
+
task_id: string;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* 查询落雪 B50 任务状态
|
|
79
|
+
*/
|
|
80
|
+
getLxB50TaskStatus(maiUid: string): Promise<{
|
|
81
|
+
code: number;
|
|
82
|
+
alive_task_id: string;
|
|
83
|
+
alive_task_time: string;
|
|
84
|
+
}>;
|
|
85
|
+
/**
|
|
86
|
+
* 根据ID查询落雪 B50 任务
|
|
87
|
+
*/
|
|
88
|
+
getLxB50TaskById(taskId: string): Promise<{
|
|
89
|
+
code: number;
|
|
90
|
+
alive_task_id: string;
|
|
91
|
+
alive_task_time: string;
|
|
92
|
+
alive_task_end_time?: string;
|
|
93
|
+
error?: string;
|
|
94
|
+
done: boolean;
|
|
95
|
+
}>;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=api.d.ts.map
|
package/lib/api.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/api.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MaiBotAPI = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
class MaiBotAPI {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.client = axios_1.default.create({
|
|
11
|
+
baseURL: config.baseURL || 'http://localhost:5566',
|
|
12
|
+
timeout: config.timeout || 30000,
|
|
13
|
+
headers: {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 二维码转用户ID
|
|
20
|
+
*/
|
|
21
|
+
async qr2userid(qrText) {
|
|
22
|
+
const response = await this.client.post(`/api/qr2userid/${qrText}`);
|
|
23
|
+
return response.data;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 用户状态预览
|
|
27
|
+
*/
|
|
28
|
+
async preview(maiUid) {
|
|
29
|
+
const response = await this.client.get('/api/preview', {
|
|
30
|
+
params: { mai_uid: maiUid },
|
|
31
|
+
});
|
|
32
|
+
return response.data;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 用户登出
|
|
36
|
+
*/
|
|
37
|
+
async logout(maiUid, regionId, clientId, placeId, token) {
|
|
38
|
+
const response = await this.client.post('/api/logout', {
|
|
39
|
+
token,
|
|
40
|
+
}, {
|
|
41
|
+
params: {
|
|
42
|
+
mai_uid: maiUid,
|
|
43
|
+
region_id: regionId,
|
|
44
|
+
client_id: clientId,
|
|
45
|
+
place_id: placeId,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
return response.data;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取1.5倍票
|
|
52
|
+
*/
|
|
53
|
+
async get15Ticket(maiUid, clientId, regionId, placeId, placeName, regionName, token) {
|
|
54
|
+
const response = await this.client.post('/api/get_15_ticket', {
|
|
55
|
+
token,
|
|
56
|
+
}, {
|
|
57
|
+
params: {
|
|
58
|
+
mai_uid: maiUid,
|
|
59
|
+
client_id: clientId,
|
|
60
|
+
region_id: regionId,
|
|
61
|
+
place_id: placeId,
|
|
62
|
+
place_name: placeName,
|
|
63
|
+
region_name: regionName,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
return response.data;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 上传水鱼 B50
|
|
70
|
+
*/
|
|
71
|
+
async uploadB50(maiUid, fishToken) {
|
|
72
|
+
const response = await this.client.post('/api/upload_b50', null, {
|
|
73
|
+
params: {
|
|
74
|
+
mai_uid: maiUid,
|
|
75
|
+
fish_token: fishToken,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
return response.data;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 查询水鱼 B50 任务状态
|
|
82
|
+
*/
|
|
83
|
+
async getB50TaskStatus(maiUid) {
|
|
84
|
+
const response = await this.client.get('/api/get_b50_task_status', {
|
|
85
|
+
params: { mai_uid: maiUid },
|
|
86
|
+
});
|
|
87
|
+
return response.data;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 根据ID查询水鱼 B50 任务
|
|
91
|
+
*/
|
|
92
|
+
async getB50TaskById(taskId) {
|
|
93
|
+
const response = await this.client.get('/api/get_b50_task_byid', {
|
|
94
|
+
params: { taskid: taskId },
|
|
95
|
+
});
|
|
96
|
+
return response.data;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 上传落雪 B50
|
|
100
|
+
*/
|
|
101
|
+
async uploadLxB50(maiUid, lxnsCode) {
|
|
102
|
+
const response = await this.client.post('/api/upload_lx_b50', null, {
|
|
103
|
+
params: {
|
|
104
|
+
mai_uid: maiUid,
|
|
105
|
+
lxns_code: lxnsCode,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
return response.data;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 查询落雪 B50 任务状态
|
|
112
|
+
*/
|
|
113
|
+
async getLxB50TaskStatus(maiUid) {
|
|
114
|
+
const response = await this.client.get('/api/get_lx_b50_task_status', {
|
|
115
|
+
params: { mai_uid: maiUid },
|
|
116
|
+
});
|
|
117
|
+
return response.data;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 根据ID查询落雪 B50 任务
|
|
121
|
+
*/
|
|
122
|
+
async getLxB50TaskById(taskId) {
|
|
123
|
+
const response = await this.client.get('/api/get_lx_b50_task_byid', {
|
|
124
|
+
params: { taskid: taskId },
|
|
125
|
+
});
|
|
126
|
+
return response.data;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.MaiBotAPI = MaiBotAPI;
|
|
130
|
+
//# sourceMappingURL=api.js.map
|
package/lib/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA4C;AAO5C,MAAa,SAAS;IAGpB,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;YAClD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAA;QACnE,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAS1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;YACrD,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,KAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,KAAK;SACN,EAAE;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,MAAc,EACd,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,SAAiB,EACjB,UAAkB,EAClB,KAAa;QAOb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5D,KAAK;SACN,EAAE;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,OAAO;gBACjB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,UAAU;aACxB;SACF,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,SAAiB;QAK/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE;YAC/D,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,SAAS;aACtB;SACF,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAKnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACjE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QAQjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE;YAC/D,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SAC3B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,QAAgB;QAKhD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE;YAClE,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAKrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE;YACpE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAQnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE;YAClE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;SAC3B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;CACF;AA7LD,8BA6LC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Context } from 'koishi';
|
|
2
|
+
export interface UserBinding {
|
|
3
|
+
id: number;
|
|
4
|
+
userId: string;
|
|
5
|
+
maiUid: string;
|
|
6
|
+
qrCode: string;
|
|
7
|
+
bindTime: Date;
|
|
8
|
+
userName?: string;
|
|
9
|
+
rating?: string;
|
|
10
|
+
}
|
|
11
|
+
declare module 'koishi' {
|
|
12
|
+
interface Tables {
|
|
13
|
+
maibot_bindings: UserBinding;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export declare function extendDatabase(ctx: Context): void;
|
|
17
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,IAAI,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,MAAM;QACd,eAAe,EAAE,WAAW,CAAA;KAC7B;CACF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,QAe1C"}
|
package/lib/database.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extendDatabase = extendDatabase;
|
|
4
|
+
function extendDatabase(ctx) {
|
|
5
|
+
ctx.model.extend('maibot_bindings', {
|
|
6
|
+
id: 'unsigned',
|
|
7
|
+
userId: 'string',
|
|
8
|
+
maiUid: 'string',
|
|
9
|
+
qrCode: 'string',
|
|
10
|
+
bindTime: 'timestamp',
|
|
11
|
+
userName: 'string',
|
|
12
|
+
rating: 'string',
|
|
13
|
+
}, {
|
|
14
|
+
primary: 'id',
|
|
15
|
+
autoInc: true,
|
|
16
|
+
// userName 和 rating 可以为空
|
|
17
|
+
unique: ['userId'], // 每个用户只能绑定一个账号
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;AAkBA,wCAeC;AAfD,SAAgB,cAAc,CAAC,GAAY;IACzC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE;QAClC,EAAE,EAAE,UAAU;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,QAAQ;KACjB,EAAE;QACD,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,yBAAyB;QACzB,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,eAAe;KACpC,CAAC,CAAA;AACJ,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Context, Schema } from 'koishi';
|
|
2
|
+
export declare const name = "maibot";
|
|
3
|
+
export interface Config {
|
|
4
|
+
apiBaseURL: string;
|
|
5
|
+
apiTimeout?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const Config: Schema<Config>;
|
|
8
|
+
export declare function apply(ctx: Context, config: Config): void;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIxC,eAAO,MAAM,IAAI,WAAW,CAAA;AAE5B,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAGhC,CAAA;AAEF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAuKjD"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Config = exports.name = void 0;
|
|
4
|
+
exports.apply = apply;
|
|
5
|
+
const koishi_1 = require("koishi");
|
|
6
|
+
const api_1 = require("./api");
|
|
7
|
+
const database_1 = require("./database");
|
|
8
|
+
exports.name = 'maibot';
|
|
9
|
+
exports.Config = koishi_1.Schema.object({
|
|
10
|
+
apiBaseURL: koishi_1.Schema.string().default('http://localhost:5566').description('API服务地址'),
|
|
11
|
+
apiTimeout: koishi_1.Schema.number().default(30000).description('API请求超时时间(毫秒)'),
|
|
12
|
+
});
|
|
13
|
+
function apply(ctx, config) {
|
|
14
|
+
// 扩展数据库
|
|
15
|
+
(0, database_1.extendDatabase)(ctx);
|
|
16
|
+
// 初始化API客户端
|
|
17
|
+
const api = new api_1.MaiBotAPI({
|
|
18
|
+
baseURL: config.apiBaseURL,
|
|
19
|
+
timeout: config.apiTimeout,
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* 绑定用户
|
|
23
|
+
* 用法: /mai绑定 <SGWCMAID...>
|
|
24
|
+
*/
|
|
25
|
+
ctx.command('mai绑定 <qrCode:text>', '绑定舞萌DX账号')
|
|
26
|
+
.action(async ({ session }, qrCode) => {
|
|
27
|
+
if (!session) {
|
|
28
|
+
return '❌ 无法获取会话信息';
|
|
29
|
+
}
|
|
30
|
+
if (!qrCode) {
|
|
31
|
+
return '请提供二维码文本(SGWCMAID开头)\n用法:/mai绑定 SGWCMAIDxxxxxxxxxxxxx';
|
|
32
|
+
}
|
|
33
|
+
// 验证二维码格式
|
|
34
|
+
if (!qrCode.startsWith('SGWCMAID')) {
|
|
35
|
+
return '❌ 二维码格式错误,必须以 SGWCMAID 开头';
|
|
36
|
+
}
|
|
37
|
+
if (qrCode.length < 48 || qrCode.length > 128) {
|
|
38
|
+
return '❌ 二维码长度错误,应在48-128字符之间';
|
|
39
|
+
}
|
|
40
|
+
const userId = session.userId;
|
|
41
|
+
try {
|
|
42
|
+
// 检查是否已绑定
|
|
43
|
+
const existing = await ctx.database.get('maibot_bindings', { userId });
|
|
44
|
+
if (existing.length > 0) {
|
|
45
|
+
return `❌ 您已经绑定了账号\n用户ID: ${existing[0].maiUid}\n绑定时间: ${new Date(existing[0].bindTime).toLocaleString('zh-CN')}\n\n如需重新绑定,请先使用 /mai解绑`;
|
|
46
|
+
}
|
|
47
|
+
// 调用API获取用户ID
|
|
48
|
+
const result = await api.qr2userid(qrCode);
|
|
49
|
+
if (!result.QRStatus) {
|
|
50
|
+
return `❌ 绑定失败:无法从二维码获取用户ID\n错误信息: ${result.UserID === 'MTI1MTEy' ? '无效的二维码' : result.UserID}`;
|
|
51
|
+
}
|
|
52
|
+
const maiUid = result.UserID;
|
|
53
|
+
// 获取用户详细信息(可选)
|
|
54
|
+
let userName;
|
|
55
|
+
let rating;
|
|
56
|
+
try {
|
|
57
|
+
const preview = await api.preview(maiUid);
|
|
58
|
+
userName = preview.UserName;
|
|
59
|
+
rating = preview.Rating;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
// 如果获取预览失败,不影响绑定
|
|
63
|
+
ctx.logger('maibot').warn('获取用户预览信息失败:', error);
|
|
64
|
+
}
|
|
65
|
+
// 存储到数据库
|
|
66
|
+
await ctx.database.create('maibot_bindings', {
|
|
67
|
+
userId,
|
|
68
|
+
maiUid,
|
|
69
|
+
qrCode,
|
|
70
|
+
bindTime: new Date(),
|
|
71
|
+
userName,
|
|
72
|
+
rating,
|
|
73
|
+
});
|
|
74
|
+
return `✅ 绑定成功!\n` +
|
|
75
|
+
`用户ID: ${maiUid}\n` +
|
|
76
|
+
(userName ? `用户名: ${userName}\n` : '') +
|
|
77
|
+
(rating ? `Rating: ${rating}\n` : '') +
|
|
78
|
+
`绑定时间: ${new Date().toLocaleString('zh-CN')}`;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
ctx.logger('maibot').error('绑定失败:', error);
|
|
82
|
+
if (error?.response) {
|
|
83
|
+
return `❌ API请求失败: ${error.response.status} ${error.response.statusText}`;
|
|
84
|
+
}
|
|
85
|
+
return `❌ 绑定失败: ${error?.message || '未知错误'}`;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* 解绑用户
|
|
90
|
+
* 用法: /mai解绑
|
|
91
|
+
*/
|
|
92
|
+
ctx.command('mai解绑', '解绑舞萌DX账号')
|
|
93
|
+
.action(async ({ session }) => {
|
|
94
|
+
if (!session) {
|
|
95
|
+
return '❌ 无法获取会话信息';
|
|
96
|
+
}
|
|
97
|
+
const userId = session.userId;
|
|
98
|
+
try {
|
|
99
|
+
// 查找绑定记录
|
|
100
|
+
const bindings = await ctx.database.get('maibot_bindings', { userId });
|
|
101
|
+
if (bindings.length === 0) {
|
|
102
|
+
return '❌ 您还没有绑定账号\n使用 /mai绑定 <SGWCMAID...> 进行绑定';
|
|
103
|
+
}
|
|
104
|
+
// 删除绑定记录
|
|
105
|
+
await ctx.database.remove('maibot_bindings', { userId });
|
|
106
|
+
return `✅ 解绑成功!\n已解绑的用户ID: ${bindings[0].maiUid}`;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
ctx.logger('maibot').error('解绑失败:', error);
|
|
110
|
+
return `❌ 解绑失败: ${error?.message || '未知错误'}`;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
/**
|
|
114
|
+
* 查询绑定状态
|
|
115
|
+
* 用法: /mai状态
|
|
116
|
+
*/
|
|
117
|
+
ctx.command('mai状态', '查询绑定状态')
|
|
118
|
+
.action(async ({ session }) => {
|
|
119
|
+
if (!session) {
|
|
120
|
+
return '❌ 无法获取会话信息';
|
|
121
|
+
}
|
|
122
|
+
const userId = session.userId;
|
|
123
|
+
try {
|
|
124
|
+
const bindings = await ctx.database.get('maibot_bindings', { userId });
|
|
125
|
+
if (bindings.length === 0) {
|
|
126
|
+
return '❌ 您还没有绑定账号\n使用 /mai绑定 <SGWCMAID...> 进行绑定';
|
|
127
|
+
}
|
|
128
|
+
const binding = bindings[0];
|
|
129
|
+
let statusInfo = `✅ 已绑定账号\n\n` +
|
|
130
|
+
`用户ID: ${binding.maiUid}\n` +
|
|
131
|
+
`绑定时间: ${new Date(binding.bindTime).toLocaleString('zh-CN')}\n`;
|
|
132
|
+
// 尝试获取最新状态
|
|
133
|
+
try {
|
|
134
|
+
const preview = await api.preview(binding.maiUid);
|
|
135
|
+
statusInfo += `\n📊 账号信息:\n` +
|
|
136
|
+
`用户名: ${preview.UserName}\n` +
|
|
137
|
+
`Rating: ${preview.Rating}\n` +
|
|
138
|
+
`登录状态: ${preview.IsLogin}\n` +
|
|
139
|
+
`封禁状态: ${preview.BanState}\n` +
|
|
140
|
+
`最后登录: ${preview.LastLoginDate}\n` +
|
|
141
|
+
`最后游玩: ${preview.LastPlayDate}`;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
// 如果获取失败,使用缓存的信息
|
|
145
|
+
if (binding.userName) {
|
|
146
|
+
statusInfo += `\n📊 账号信息(缓存):\n` +
|
|
147
|
+
`用户名: ${binding.userName}\n` +
|
|
148
|
+
(binding.rating ? `Rating: ${binding.rating}\n` : '');
|
|
149
|
+
}
|
|
150
|
+
statusInfo += `\n⚠️ 无法获取最新状态,请检查API服务`;
|
|
151
|
+
}
|
|
152
|
+
return statusInfo;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
ctx.logger('maibot').error('查询状态失败:', error);
|
|
156
|
+
return `❌ 查询失败: ${error?.message || '未知错误'}`;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "koishi-plugin-maibot",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "舞萌DX游戏高级操作插件 for Koishi - 支持用户绑定、B50更新、1.5倍票获取等功能",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"typings": "lib/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"lib",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"koishi",
|
|
13
|
+
"plugin",
|
|
14
|
+
"maimai",
|
|
15
|
+
"maibot",
|
|
16
|
+
"舞萌",
|
|
17
|
+
"maimai-dx"
|
|
18
|
+
],
|
|
19
|
+
"author": "",
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": ""
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"koishi": "^4.15.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^20.0.0",
|
|
30
|
+
"typescript": "^5.0.0",
|
|
31
|
+
"koishi": "^4.15.0"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"axios": "^1.6.0"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc",
|
|
38
|
+
"dev": "tsc --watch"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|