koishi-plugin-maibot 1.7.61 → 1.7.65
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/lib/binding-verify.d.ts +13 -0
- package/lib/binding-verify.d.ts.map +1 -0
- package/lib/binding-verify.js +49 -0
- package/lib/binding-verify.js.map +1 -0
- package/lib/database.d.ts +45 -0
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +45 -0
- package/lib/database.js.map +1 -1
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +555 -492
- package/lib/index.js.map +1 -1
- package/lib/priority-cooldown.d.ts +75 -0
- package/lib/priority-cooldown.d.ts.map +1 -0
- package/lib/priority-cooldown.js +555 -0
- package/lib/priority-cooldown.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { UserBinding } from './database';
|
|
2
|
+
export declare function normalizePreviewUserId(userId: string | number): string;
|
|
3
|
+
/**
|
|
4
|
+
* 校验 preview 与绑定是否为同一街机账号(加密 UserID + 可选绑定时的玩家名)
|
|
5
|
+
*/
|
|
6
|
+
export declare function verifyPreviewMatchesBinding(binding: UserBinding, preview: {
|
|
7
|
+
UserID: string | number;
|
|
8
|
+
UserName?: string;
|
|
9
|
+
}): string | null;
|
|
10
|
+
/** lastStateAt:maibot_user_rebind_state.lastBindChangeAt;bindTime:当前绑定记录的 bindTime(无绑定则 0) */
|
|
11
|
+
export declare function msUntilBindChangeAllowed(lastStateAtMs: number, bindTimeMs: number, minIntervalDays: number): number;
|
|
12
|
+
export declare function formatBindChangeWaitHuman(ms: number): string;
|
|
13
|
+
//# sourceMappingURL=binding-verify.d.ts.map
|
|
@@ -0,0 +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;;GAEG;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,MAAM,GAAG,IAAI,CAaf;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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizePreviewUserId = normalizePreviewUserId;
|
|
4
|
+
exports.verifyPreviewMatchesBinding = verifyPreviewMatchesBinding;
|
|
5
|
+
exports.msUntilBindChangeAllowed = msUntilBindChangeAllowed;
|
|
6
|
+
exports.formatBindChangeWaitHuman = formatBindChangeWaitHuman;
|
|
7
|
+
function normalizePreviewUserId(userId) {
|
|
8
|
+
return String(userId);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 校验 preview 与绑定是否为同一街机账号(加密 UserID + 可选绑定时的玩家名)
|
|
12
|
+
*/
|
|
13
|
+
function verifyPreviewMatchesBinding(binding, preview) {
|
|
14
|
+
const pid = normalizePreviewUserId(preview.UserID);
|
|
15
|
+
if (pid === '-1' || preview.UserID === -1) {
|
|
16
|
+
return '❌ 无效或过期的二维码,无法完成验证。';
|
|
17
|
+
}
|
|
18
|
+
if (String(binding.maiUid) !== pid) {
|
|
19
|
+
return '❌ 当前二维码对应的街机账号与绑定不一致,请使用**已绑定账号本人**微信获取的二维码。';
|
|
20
|
+
}
|
|
21
|
+
const boundName = binding.boundPlayerName?.trim();
|
|
22
|
+
if (boundName && preview.UserName !== undefined && preview.UserName.trim() !== boundName) {
|
|
23
|
+
return `❌ 玩家名与绑定记录不一致(绑定为「${boundName}」,当前为「${preview.UserName.trim()}」)。如已改名请使用解绑卡流程后重新绑定。`;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/** lastStateAt:maibot_user_rebind_state.lastBindChangeAt;bindTime:当前绑定记录的 bindTime(无绑定则 0) */
|
|
28
|
+
function msUntilBindChangeAllowed(lastStateAtMs, bindTimeMs, minIntervalDays) {
|
|
29
|
+
const base = Math.max(lastStateAtMs || 0, bindTimeMs || 0);
|
|
30
|
+
if (!base)
|
|
31
|
+
return 0;
|
|
32
|
+
const minMs = Math.max(0, minIntervalDays) * 24 * 60 * 60 * 1000;
|
|
33
|
+
const elapsed = Date.now() - base;
|
|
34
|
+
return Math.max(0, minMs - elapsed);
|
|
35
|
+
}
|
|
36
|
+
function formatBindChangeWaitHuman(ms) {
|
|
37
|
+
if (ms <= 0)
|
|
38
|
+
return '0';
|
|
39
|
+
const d = Math.floor(ms / (24 * 60 * 60 * 1000));
|
|
40
|
+
const h = Math.floor((ms % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000));
|
|
41
|
+
if (d > 0)
|
|
42
|
+
return `${d} 天${h > 0 ? ` ${h} 小时` : ''}`;
|
|
43
|
+
const m = Math.floor((ms % (60 * 60 * 1000)) / (60 * 1000));
|
|
44
|
+
if (h > 0)
|
|
45
|
+
return `${h} 小时${m > 0 ? ` ${m} 分钟` : ''}`;
|
|
46
|
+
const s = Math.ceil(ms / 1000);
|
|
47
|
+
return `${Math.max(1, s)} 秒`;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=binding-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-verify.js","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":"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"}
|
package/lib/database.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ export interface UserBinding {
|
|
|
19
19
|
protectionMode?: boolean;
|
|
20
20
|
lastQrCode?: string;
|
|
21
21
|
lastQrCodeTime?: Date;
|
|
22
|
+
/** 绑定时快照的玩家名,用于与每次 preview 校验 */
|
|
23
|
+
boundPlayerName?: string;
|
|
24
|
+
/** 解绑卡兑换累计次数,冷却期内解绑时消耗 */
|
|
25
|
+
unbindCredits?: number;
|
|
22
26
|
}
|
|
23
27
|
export interface MaiBotSetting {
|
|
24
28
|
key: string;
|
|
@@ -39,11 +43,52 @@ export interface OperationLog {
|
|
|
39
43
|
apiResponse?: string;
|
|
40
44
|
createdAt: Date;
|
|
41
45
|
}
|
|
46
|
+
export interface MaiBotUserCooldown {
|
|
47
|
+
userId: string;
|
|
48
|
+
slot: string;
|
|
49
|
+
lastAt: Date;
|
|
50
|
+
}
|
|
51
|
+
/** personal / group / unbind(解绑卡,兑换后为当前绑定账号增加解绑额度) */
|
|
52
|
+
export type MaiBotCardKind = 'personal' | 'group' | 'unbind';
|
|
53
|
+
export interface MaiBotCardKey {
|
|
54
|
+
id: number;
|
|
55
|
+
code: string;
|
|
56
|
+
/** 默认 personal(旧数据无此字段时按 personal 处理) */
|
|
57
|
+
cardKind?: MaiBotCardKind;
|
|
58
|
+
permanent: boolean;
|
|
59
|
+
durationMs: number;
|
|
60
|
+
createdAt: Date;
|
|
61
|
+
issuerUserId: string;
|
|
62
|
+
redeemedAt?: Date;
|
|
63
|
+
redeemerUserId?: string;
|
|
64
|
+
active: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface MaiBotPriorityUser {
|
|
67
|
+
userId: string;
|
|
68
|
+
expiresAt?: Date;
|
|
69
|
+
updatedAt: Date;
|
|
70
|
+
}
|
|
71
|
+
/** 群组优先授权:绑定在 platform:guildId(无 platform 时仅 guildId) */
|
|
72
|
+
export interface MaiBotGroupPriority {
|
|
73
|
+
guildKey: string;
|
|
74
|
+
expiresAt?: Date;
|
|
75
|
+
updatedAt: Date;
|
|
76
|
+
}
|
|
77
|
+
/** 解绑后仍记录上次绑定/解绑时间,用于换绑冷却 */
|
|
78
|
+
export interface MaiBotUserRebindState {
|
|
79
|
+
userId: string;
|
|
80
|
+
lastBindChangeAt: Date;
|
|
81
|
+
}
|
|
42
82
|
declare module 'koishi' {
|
|
43
83
|
interface Tables {
|
|
44
84
|
maibot_bindings: UserBinding;
|
|
45
85
|
maibot_settings: MaiBotSetting;
|
|
46
86
|
maibot_operation_logs: OperationLog;
|
|
87
|
+
maibot_user_cooldowns: MaiBotUserCooldown;
|
|
88
|
+
maibot_card_keys: MaiBotCardKey;
|
|
89
|
+
maibot_priority_users: MaiBotPriorityUser;
|
|
90
|
+
maibot_group_priority: MaiBotGroupPriority;
|
|
91
|
+
maibot_user_rebind_state: MaiBotUserRebindState;
|
|
47
92
|
}
|
|
48
93
|
}
|
|
49
94
|
export declare function extendDatabase(ctx: Context): void;
|
package/lib/database.d.ts.map
CHANGED
|
@@ -1 +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;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,IAAI,CAAA;
|
|
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;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAA;CACb;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE5D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,IAAI,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,6BAA6B;AAC7B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,IAAI,CAAA;CACvB;AAED,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,MAAM;QACd,eAAe,EAAE,WAAW,CAAA;QAC5B,eAAe,EAAE,aAAa,CAAA;QAC9B,qBAAqB,EAAE,YAAY,CAAA;QACnC,qBAAqB,EAAE,kBAAkB,CAAA;QACzC,gBAAgB,EAAE,aAAa,CAAA;QAC/B,qBAAqB,EAAE,kBAAkB,CAAA;QACzC,qBAAqB,EAAE,mBAAmB,CAAA;QAC1C,wBAAwB,EAAE,qBAAqB,CAAA;KAChD;CACF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,QA2G1C"}
|
package/lib/database.js
CHANGED
|
@@ -22,6 +22,8 @@ function extendDatabase(ctx) {
|
|
|
22
22
|
protectionMode: 'boolean', // 是否开启保护模式
|
|
23
23
|
lastQrCode: 'string', // 最近输入的SGID(用于10分钟内缓存)
|
|
24
24
|
lastQrCodeTime: 'timestamp', // 最近输入SGID的时间戳
|
|
25
|
+
boundPlayerName: 'string',
|
|
26
|
+
unbindCredits: 'unsigned',
|
|
25
27
|
}, {
|
|
26
28
|
primary: 'id',
|
|
27
29
|
autoInc: true,
|
|
@@ -56,5 +58,48 @@ function extendDatabase(ctx) {
|
|
|
56
58
|
// targetUserId, guildId, channelId, result, errorMessage, apiResponse 可以为空
|
|
57
59
|
unique: ['refId'], // refId 必须唯一
|
|
58
60
|
});
|
|
61
|
+
ctx.model.extend('maibot_user_cooldowns', {
|
|
62
|
+
userId: 'string',
|
|
63
|
+
slot: 'string',
|
|
64
|
+
lastAt: 'timestamp',
|
|
65
|
+
}, {
|
|
66
|
+
primary: ['userId', 'slot'],
|
|
67
|
+
});
|
|
68
|
+
ctx.model.extend('maibot_card_keys', {
|
|
69
|
+
id: 'unsigned',
|
|
70
|
+
code: 'string',
|
|
71
|
+
cardKind: 'string',
|
|
72
|
+
permanent: 'boolean',
|
|
73
|
+
durationMs: 'unsigned',
|
|
74
|
+
createdAt: 'timestamp',
|
|
75
|
+
issuerUserId: 'string',
|
|
76
|
+
redeemedAt: 'timestamp',
|
|
77
|
+
redeemerUserId: 'string',
|
|
78
|
+
active: 'boolean',
|
|
79
|
+
}, {
|
|
80
|
+
primary: 'id',
|
|
81
|
+
autoInc: true,
|
|
82
|
+
unique: ['code'],
|
|
83
|
+
});
|
|
84
|
+
ctx.model.extend('maibot_priority_users', {
|
|
85
|
+
userId: 'string',
|
|
86
|
+
expiresAt: 'timestamp',
|
|
87
|
+
updatedAt: 'timestamp',
|
|
88
|
+
}, {
|
|
89
|
+
primary: 'userId',
|
|
90
|
+
});
|
|
91
|
+
ctx.model.extend('maibot_group_priority', {
|
|
92
|
+
guildKey: 'string',
|
|
93
|
+
expiresAt: 'timestamp',
|
|
94
|
+
updatedAt: 'timestamp',
|
|
95
|
+
}, {
|
|
96
|
+
primary: 'guildKey',
|
|
97
|
+
});
|
|
98
|
+
ctx.model.extend('maibot_user_rebind_state', {
|
|
99
|
+
userId: 'string',
|
|
100
|
+
lastBindChangeAt: 'timestamp',
|
|
101
|
+
}, {
|
|
102
|
+
primary: 'userId',
|
|
103
|
+
});
|
|
59
104
|
}
|
|
60
105
|
//# sourceMappingURL=database.js.map
|
package/lib/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Context, Schema } from 'koishi';
|
|
2
|
+
import { type PriorityCooldownConfig } from './priority-cooldown';
|
|
2
3
|
export declare const name = "maibot";
|
|
3
4
|
export declare const inject: string[];
|
|
4
5
|
export interface MachineInfo {
|
|
@@ -59,6 +60,15 @@ export interface Config {
|
|
|
59
60
|
b50PollTimeout?: number;
|
|
60
61
|
b50PollRequestTimeout?: number;
|
|
61
62
|
autoRecallProcessingMessages?: boolean;
|
|
63
|
+
/** 卡密生成/删除/导出等管理指令需要的 Koishi authority,默认 4 */
|
|
64
|
+
authLevelForCardAdmin?: number;
|
|
65
|
+
/** 普通用户指令冷却(优先用户可走更短冷却);管理员(authority≥adminBypassAuthority)不受限 */
|
|
66
|
+
priorityCooldown?: PriorityCooldownConfig;
|
|
67
|
+
/** 换绑冷却与解绑卡说明(shopUrl 留空则用 priorityCooldown.shopUrl) */
|
|
68
|
+
rebindPolicy?: {
|
|
69
|
+
minDaysBetweenBindChange: number;
|
|
70
|
+
shopUrl?: string;
|
|
71
|
+
};
|
|
62
72
|
}
|
|
63
73
|
export declare const Config: Schema<Config>;
|
|
64
74
|
export declare function apply(ctx: Context, config: Config): void;
|
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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"}
|