koishi-plugin-maibot 1.7.66 → 1.7.67
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.js +1 -1
- package/lib/binding-verify.js.map +1 -1
- package/lib/database.d.ts +12 -0
- package/lib/database.d.ts.map +1 -1
- package/lib/database.js +10 -0
- package/lib/database.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +215 -35
- package/lib/index.js.map +1 -1
- package/lib/priority-cooldown.d.ts +49 -1
- package/lib/priority-cooldown.d.ts.map +1 -1
- package/lib/priority-cooldown.js +365 -5
- package/lib/priority-cooldown.js.map +1 -1
- package/package.json +1 -1
package/lib/binding-verify.js
CHANGED
|
@@ -63,7 +63,7 @@ function verifyPreviewMatchesBinding(binding, preview, nameMatch = resolveBindin
|
|
|
63
63
|
return '❌ 无效或过期的二维码,无法完成验证。';
|
|
64
64
|
}
|
|
65
65
|
if (String(binding.maiUid) !== pid) {
|
|
66
|
-
return '❌
|
|
66
|
+
return '❌ 当前二维码对应的街机账号与绑定不一致,请使用已绑定账号本人微信获取的二维码。';
|
|
67
67
|
}
|
|
68
68
|
const boundName = binding.boundPlayerName?.trim();
|
|
69
69
|
if (!boundName || preview.UserName === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-verify.js","sourceRoot":"","sources":["../src/binding-verify.ts"],"names":[],"mappings":"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
|
|
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
|
@@ -67,12 +67,23 @@ export interface MaiBotPriorityUser {
|
|
|
67
67
|
userId: string;
|
|
68
68
|
expiresAt?: Date;
|
|
69
69
|
updatedAt: Date;
|
|
70
|
+
/** 为 true 表示由「authority 高于阈值」自动写入的永久优先;权限回落时可安全删除,不影响卡密兑换记录 */
|
|
71
|
+
authorityAuto?: boolean;
|
|
70
72
|
}
|
|
71
73
|
/** 群组优先授权:绑定在 platform:guildId(无 platform 时仅 guildId) */
|
|
72
74
|
export interface MaiBotGroupPriority {
|
|
73
75
|
guildKey: string;
|
|
74
76
|
expiresAt?: Date;
|
|
75
77
|
updatedAt: Date;
|
|
78
|
+
/** 可取消/换绑本群群组优先的用户键(制表符分隔,与兑换时写入的账号键一致) */
|
|
79
|
+
managerUserIds?: string;
|
|
80
|
+
}
|
|
81
|
+
/** 群组优先换绑:先在原群发起,再在目标群完成 */
|
|
82
|
+
export interface MaiBotGroupRebindPending {
|
|
83
|
+
anchorUserId: string;
|
|
84
|
+
matchKeys: string;
|
|
85
|
+
fromGuildKey: string;
|
|
86
|
+
expiresAt: Date;
|
|
76
87
|
}
|
|
77
88
|
/** 解绑后仍记录上次绑定/解绑时间,用于换绑冷却 */
|
|
78
89
|
export interface MaiBotUserRebindState {
|
|
@@ -88,6 +99,7 @@ declare module 'koishi' {
|
|
|
88
99
|
maibot_card_keys: MaiBotCardKey;
|
|
89
100
|
maibot_priority_users: MaiBotPriorityUser;
|
|
90
101
|
maibot_group_priority: MaiBotGroupPriority;
|
|
102
|
+
maibot_group_rebind_pending: MaiBotGroupRebindPending;
|
|
91
103
|
maibot_user_rebind_state: MaiBotUserRebindState;
|
|
92
104
|
}
|
|
93
105
|
}
|
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;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;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/lib/database.js
CHANGED
|
@@ -85,6 +85,7 @@ function extendDatabase(ctx) {
|
|
|
85
85
|
userId: 'string',
|
|
86
86
|
expiresAt: 'timestamp',
|
|
87
87
|
updatedAt: 'timestamp',
|
|
88
|
+
authorityAuto: 'boolean',
|
|
88
89
|
}, {
|
|
89
90
|
primary: 'userId',
|
|
90
91
|
});
|
|
@@ -92,9 +93,18 @@ function extendDatabase(ctx) {
|
|
|
92
93
|
guildKey: 'string',
|
|
93
94
|
expiresAt: 'timestamp',
|
|
94
95
|
updatedAt: 'timestamp',
|
|
96
|
+
managerUserIds: 'text',
|
|
95
97
|
}, {
|
|
96
98
|
primary: 'guildKey',
|
|
97
99
|
});
|
|
100
|
+
ctx.model.extend('maibot_group_rebind_pending', {
|
|
101
|
+
anchorUserId: 'string',
|
|
102
|
+
matchKeys: 'text',
|
|
103
|
+
fromGuildKey: 'string',
|
|
104
|
+
expiresAt: 'timestamp',
|
|
105
|
+
}, {
|
|
106
|
+
primary: 'anchorUserId',
|
|
107
|
+
});
|
|
98
108
|
ctx.model.extend('maibot_user_rebind_state', {
|
|
99
109
|
userId: 'string',
|
|
100
110
|
lastBindChangeAt: 'timestamp',
|
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
|
@@ -62,7 +62,7 @@ export interface Config {
|
|
|
62
62
|
autoRecallProcessingMessages?: boolean;
|
|
63
63
|
/** 卡密生成/删除/导出等管理指令需要的 Koishi authority,默认 4 */
|
|
64
64
|
authLevelForCardAdmin?: number;
|
|
65
|
-
/**
|
|
65
|
+
/** 普通用户指令冷却(优先用户可走更短冷却);authority > adminBypassAuthority 时绕过冷却并自动同步永久个人优先 */
|
|
66
66
|
priorityCooldown?: PriorityCooldownConfig;
|
|
67
67
|
/** 换绑冷却与解绑卡说明(shopUrl 留空则用 priorityCooldown.shopUrl) */
|
|
68
68
|
rebindPolicy?: {
|
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;AASjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -89,7 +89,9 @@ exports.Config = koishi_1.Schema.object({
|
|
|
89
89
|
authLevelForCardAdmin: koishi_1.Schema.number().default(4).description('卡密管理指令(生成/删除/导出)需要的 Koishi authority,默认 4'),
|
|
90
90
|
priorityCooldown: koishi_1.Schema.object({
|
|
91
91
|
enabled: koishi_1.Schema.boolean().default(false).description('开启后,非管理员、非优先用户执行功能指令需等待冷却'),
|
|
92
|
-
adminBypassAuthority: koishi_1.Schema.number()
|
|
92
|
+
adminBypassAuthority: koishi_1.Schema.number()
|
|
93
|
+
.default(4)
|
|
94
|
+
.description('仅当用户 Koishi authority 大于该数值时视为管理员:绕过冷却,并自动写入永久个人优先(带标记,权限回落时自动删除);卡密兑换的优先记录不会被删除。'),
|
|
93
95
|
shopUrl: koishi_1.Schema.string().default('https://ifdian.net/a/AWMC_TEAM?tab=shop').description('冷却提示中的购买链接'),
|
|
94
96
|
messageTemplate: koishi_1.Schema.string().role('textarea', { rows: 3 }).default('普通用户使用此功能有限制。您的冷却时间剩余:{remainingSec}秒。前往{shopUrl}购买优先授权!').description('冷却中提示(占位符 {remainingSec} {shopUrl})'),
|
|
95
97
|
normalTicketMs: koishi_1.Schema.number().default(1200000).description('普通用户「发票」类冷却(毫秒),默认 20 分钟'),
|
|
@@ -298,6 +300,29 @@ function parseInteractiveCardKindInput(text) {
|
|
|
298
300
|
return 'unbind';
|
|
299
301
|
return null;
|
|
300
302
|
}
|
|
303
|
+
/** 批量作废卡密:一行一条;可粘贴导出 TSV(取每行首列);从行内匹配 MAI-… */
|
|
304
|
+
function parseBatchVoidCardCodes(raw) {
|
|
305
|
+
const out = [];
|
|
306
|
+
const seen = new Set();
|
|
307
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
308
|
+
let s = line.trim();
|
|
309
|
+
if (!s)
|
|
310
|
+
continue;
|
|
311
|
+
if (s.includes('\t')) {
|
|
312
|
+
s = s.split('\t')[0].trim();
|
|
313
|
+
}
|
|
314
|
+
const upper = s.toUpperCase();
|
|
315
|
+
const m = upper.match(/MAI-[A-Z0-9-]+/);
|
|
316
|
+
const code = m ? m[0] : upper;
|
|
317
|
+
if (!code.startsWith('MAI-'))
|
|
318
|
+
continue;
|
|
319
|
+
if (seen.has(code))
|
|
320
|
+
continue;
|
|
321
|
+
seen.add(code);
|
|
322
|
+
out.push(code);
|
|
323
|
+
}
|
|
324
|
+
return out;
|
|
325
|
+
}
|
|
301
326
|
function parseExportScopeInput(text) {
|
|
302
327
|
const t = text.trim().toLowerCase();
|
|
303
328
|
if (!t)
|
|
@@ -1297,7 +1322,7 @@ async function getQrText(session, ctx, api, binding, config, timeout = 60000, pr
|
|
|
1297
1322
|
}
|
|
1298
1323
|
}
|
|
1299
1324
|
function qrOrLoginFailureHint() {
|
|
1300
|
-
return '
|
|
1325
|
+
return '请使用已绑定账号本人微信中的最新玩家二维码(SGID)重试;若需更换绑定账号,请在冷却结束后使用 /mai解绑,或在冷却期内使用 /mai解绑卡。';
|
|
1301
1326
|
}
|
|
1302
1327
|
function apply(ctx, config) {
|
|
1303
1328
|
// 扩展数据库
|
|
@@ -1305,14 +1330,25 @@ function apply(ctx, config) {
|
|
|
1305
1330
|
ctx.on('command/before-execute', async (argv) => {
|
|
1306
1331
|
const sess = argv.session;
|
|
1307
1332
|
const cmd = argv.command;
|
|
1308
|
-
if (
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1333
|
+
if (sess && cmd) {
|
|
1334
|
+
const bag = sess;
|
|
1335
|
+
try {
|
|
1336
|
+
bag[MAI_SESSION_CMD_USAGE_KEY] = await computeMaiCommandUsageHint(cmd, sess);
|
|
1337
|
+
}
|
|
1338
|
+
catch {
|
|
1339
|
+
bag[MAI_SESSION_CMD_USAGE_KEY] = '';
|
|
1340
|
+
}
|
|
1313
1341
|
}
|
|
1314
|
-
|
|
1315
|
-
|
|
1342
|
+
if (sess &&
|
|
1343
|
+
cmd &&
|
|
1344
|
+
priorityCooldownCfg?.enabled &&
|
|
1345
|
+
isMaiPluginCommandName(String(cmd.name || ''))) {
|
|
1346
|
+
try {
|
|
1347
|
+
await (0, priority_cooldown_1.syncAuthorityAutoPriority)(ctx, priorityCooldownCfg, sess, async (s) => getSessionBindingKeys(ctx, s));
|
|
1348
|
+
}
|
|
1349
|
+
catch (e) {
|
|
1350
|
+
logger.warn('管理员优先授权同步失败', e);
|
|
1351
|
+
}
|
|
1316
1352
|
}
|
|
1317
1353
|
});
|
|
1318
1354
|
// Koishi 等框架在指令未捕获异常时可能只回复「发生未知错误」,此处附上当前指令用法
|
|
@@ -1369,13 +1405,13 @@ function apply(ctx, config) {
|
|
|
1369
1405
|
return (`❌ 您已经绑定了账号\n` +
|
|
1370
1406
|
`绑定时间: ${bindStr}\n` +
|
|
1371
1407
|
(credits > 0 ? `解绑卡额度: ${credits} 次\n` : '') +
|
|
1372
|
-
`\n如需重新绑定,请等待约
|
|
1373
|
-
`冷却期内请使用
|
|
1408
|
+
`\n如需重新绑定,请等待约 ${(0, binding_verify_1.formatBindChangeWaitHuman)(waitMs)}。或前往 ${shop} 购买解绑卡。\n` +
|
|
1409
|
+
`冷却期内请使用 /maiunbindkey 或 /mai解绑卡(按提示发送 SGID 并二次确认)。`);
|
|
1374
1410
|
}
|
|
1375
1411
|
return (`❌ 您已经绑定了账号\n` +
|
|
1376
1412
|
`绑定时间: ${bindStr}\n` +
|
|
1377
1413
|
(credits > 0 ? `解绑卡额度: ${credits} 次\n` : '') +
|
|
1378
|
-
`\n您已超过换绑冷却期,可直接使用
|
|
1414
|
+
`\n您已超过换绑冷却期,可直接使用 /mai解绑 后重新绑定。`);
|
|
1379
1415
|
}
|
|
1380
1416
|
// 初始化队列系统
|
|
1381
1417
|
const queueConfig = config.queue || { enabled: false, interval: 10000, message: '你正在排队,前面还有 {queuePosition} 人。预计等待 {queueEST} 秒。' };
|
|
@@ -2161,8 +2197,10 @@ function apply(ctx, config) {
|
|
|
2161
2197
|
helpText += `
|
|
2162
2198
|
|
|
2163
2199
|
💎 优先授权(缓解指令冷却,需在配置中开启 priorityCooldown):
|
|
2164
|
-
/mai兑换卡密 [卡密] — 无需 SGID
|
|
2165
|
-
/mymai 或 /mai状态 —
|
|
2200
|
+
/mai兑换卡密 [卡密] — 无需 SGID 验证;可直接带卡密或发送指令后粘贴。个人卡全局有效;群组卡须在对应群内兑换;解绑卡须已 /mai绑定
|
|
2201
|
+
/mymai 或 /mai状态 — 可查看个人授权与「群组优先」状态及到期时间
|
|
2202
|
+
/mai取消群组优先 — 在群内,群组卡兑换人可取消本群群组优先
|
|
2203
|
+
/mai群组优先换绑 — 在原群发起,再在目标群发 /mai群组优先换入(兑换人迁移授权)`;
|
|
2166
2204
|
helpText += `
|
|
2167
2205
|
|
|
2168
2206
|
🔔 提醒功能:
|
|
@@ -2205,9 +2243,13 @@ function apply(ctx, config) {
|
|
|
2205
2243
|
helpText += `
|
|
2206
2244
|
|
|
2207
2245
|
🎟️ 卡密与冷却管理(需要 auth 等级 ${authLevelForCardAdmin} 以上):
|
|
2208
|
-
/mai管理员生成卡密 —
|
|
2209
|
-
/mai管理员删除卡密 —
|
|
2210
|
-
/mai管理员导出卡密 —
|
|
2246
|
+
/mai管理员生成卡密 — 无参数时交互选择类型、时长、数量;也可 /mai管理员生成卡密 <时长> [数量] [-g|-u]
|
|
2247
|
+
/mai管理员删除卡密 — 支持多行批量(每行一条,或粘贴导出 TSV 整段);无参走交互粘贴
|
|
2248
|
+
/mai管理员导出卡密 — 无参数时交互选择范围与类型;也可 /mai管理员导出卡密 [all|unused|redeemed]
|
|
2249
|
+
/mai管理员取消群组优先 [群标识] — 取消群组优先;省略时在群内则针对当前群
|
|
2250
|
+
/mai管理员取消个人优先 <@或ID> — 清除个人优先记录
|
|
2251
|
+
/mai管理员设置个人优先 <@或ID> <spec> — spec:永久、7d、clear 等
|
|
2252
|
+
/mai管理员设置群组优先 <spec> [-g 群标识] — 直接改群组优先;spec:永久、7d、clear;-g 省略且群内则当前群
|
|
2211
2253
|
/maibypass <@用户|用户ID> — 清除该用户当前全部指令冷却(别名 /mai管理员清除冷却)`;
|
|
2212
2254
|
}
|
|
2213
2255
|
helpText += `
|
|
@@ -2556,9 +2598,9 @@ function apply(ctx, config) {
|
|
|
2556
2598
|
}
|
|
2557
2599
|
const waitMs = await getRebindWaitMsForBinding(binding);
|
|
2558
2600
|
if (waitMs > 0) {
|
|
2559
|
-
return (`❌ 当前处于换绑冷却期内,还需等待约
|
|
2560
|
-
`请使用
|
|
2561
|
-
`已绑定状态下可使用
|
|
2601
|
+
return (`❌ 当前处于换绑冷却期内,还需等待约 ${(0, binding_verify_1.formatBindChangeWaitHuman)(waitMs)}。\n` +
|
|
2602
|
+
`请使用 /mai解绑卡 或 /maiunbindkey(需解绑卡额度并验证 SGID),或前往 ${rebindShopUrl()} 购买解绑卡。\n` +
|
|
2603
|
+
`已绑定状态下可使用 /mai兑换卡密 兑换解绑卡。`);
|
|
2562
2604
|
}
|
|
2563
2605
|
await touchRebindClock(binding.userId);
|
|
2564
2606
|
await removeBindingBySession(ctx, session);
|
|
@@ -2591,7 +2633,7 @@ function apply(ctx, config) {
|
|
|
2591
2633
|
const credits = binding.unbindCredits ?? 0;
|
|
2592
2634
|
if (waitMs > 0 && credits <= 0) {
|
|
2593
2635
|
return (`❌ 换绑冷却期内且没有解绑卡额度。\n` +
|
|
2594
|
-
`还需等待约
|
|
2636
|
+
`还需等待约 ${(0, binding_verify_1.formatBindChangeWaitHuman)(waitMs)},或前往 ${rebindShopUrl()} 购买解绑卡后用 /mai兑换卡密 兑换。`);
|
|
2595
2637
|
}
|
|
2596
2638
|
const qrTextResult = await getQrText(session, ctx, api, binding, config, rebindTimeout, undefined, false);
|
|
2597
2639
|
if (qrTextResult.error) {
|
|
@@ -5987,7 +6029,7 @@ function apply(ctx, config) {
|
|
|
5987
6029
|
cardKind = ch;
|
|
5988
6030
|
}
|
|
5989
6031
|
if (cardKind !== 'unbind') {
|
|
5990
|
-
await session.send('
|
|
6032
|
+
await session.send('请输入时长,例如:7d、30d、12h、-1 或 永久\n(个人/群组卡密必填)');
|
|
5991
6033
|
const r2 = await waitForUserReply(session, ctx, promptMs);
|
|
5992
6034
|
const spec = r2?.content?.trim() || '';
|
|
5993
6035
|
const p = (0, priority_cooldown_1.parseCardDurationSpec)(spec);
|
|
@@ -5999,7 +6041,7 @@ function apply(ctx, config) {
|
|
|
5999
6041
|
else {
|
|
6000
6042
|
parsed = -1;
|
|
6001
6043
|
}
|
|
6002
|
-
await session.send('
|
|
6044
|
+
await session.send('请输入生成数量(1–50 的整数,直接发数字)');
|
|
6003
6045
|
const r3 = await waitForUserReply(session, ctx, promptMs);
|
|
6004
6046
|
const rawC = (r3?.content?.trim() || '').trim();
|
|
6005
6047
|
const cn = parseInt(rawC, 10);
|
|
@@ -6033,13 +6075,13 @@ function apply(ctx, config) {
|
|
|
6033
6075
|
: cardKind === 'unbind'
|
|
6034
6076
|
? '解绑卡须用户已绑定舞萌账号后兑换,兑换后为该绑定增加 1 次冷却期内解绑额度(配合 /mai解绑卡)。'
|
|
6035
6077
|
: '个人卡密任意环境兑换,兑换后该账号全局享受优先冷却。';
|
|
6036
|
-
return (`✅ 已生成 ${keys.length}
|
|
6078
|
+
return (`✅ 已生成 ${keys.length} 条${kindLabel}卡密(请妥善保管,勿公开):\n` +
|
|
6037
6079
|
`说明:${explain}\n` +
|
|
6038
6080
|
lines.join('\n'));
|
|
6039
6081
|
});
|
|
6040
6082
|
ctx.command('mai管理员删除卡密 [code:text]', '作废卡密(无参为交互式;需要 auth)')
|
|
6041
6083
|
.userFields(['authority'])
|
|
6042
|
-
.usage(' 快速:/mai管理员删除卡密 MAI-
|
|
6084
|
+
.usage(' 快速:/mai管理员删除卡密 MAI-XXX(可多行粘贴,每行一条;或导出 TSV 整段粘贴)\n无参数:发指令后粘贴,支持批量。')
|
|
6043
6085
|
.action(async ({ session }, code) => {
|
|
6044
6086
|
if (!session)
|
|
6045
6087
|
return '❌ 无法获取会话信息';
|
|
@@ -6049,7 +6091,7 @@ function apply(ctx, config) {
|
|
|
6049
6091
|
let codeFinal = code?.trim() || '';
|
|
6050
6092
|
const promptMs = Math.max(90000, rebindTimeout);
|
|
6051
6093
|
if (!codeFinal) {
|
|
6052
|
-
await session.send(`【作废卡密】请在 ${Math.floor(promptMs / 1000)}
|
|
6094
|
+
await session.send(`【作废卡密】请在 ${Math.floor(promptMs / 1000)} 秒内发送卡密,一行一条(可多条);支持粘贴导出 TSV(每行取首列)。\n单独发 0 = 取消`);
|
|
6053
6095
|
const r = await waitForUserReply(session, ctx, promptMs);
|
|
6054
6096
|
codeFinal = r?.content?.trim() || '';
|
|
6055
6097
|
if (r) {
|
|
@@ -6060,12 +6102,34 @@ function apply(ctx, config) {
|
|
|
6060
6102
|
}
|
|
6061
6103
|
if (!codeFinal)
|
|
6062
6104
|
return '❌ 未收到卡密或已超时';
|
|
6063
|
-
const
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6105
|
+
const codes = parseBatchVoidCardCodes(codeFinal);
|
|
6106
|
+
if (!codes.length)
|
|
6107
|
+
return '❌ 未解析到有效卡密(需 MAI- 开头,每行一条或 TSV 首列)';
|
|
6108
|
+
const voided = [];
|
|
6109
|
+
const notFound = [];
|
|
6110
|
+
const already = [];
|
|
6111
|
+
for (const c of codes) {
|
|
6112
|
+
const rows = await ctx.database.get('maibot_card_keys', { code: c });
|
|
6113
|
+
if (!rows.length) {
|
|
6114
|
+
notFound.push(c);
|
|
6115
|
+
continue;
|
|
6116
|
+
}
|
|
6117
|
+
const row = rows[0];
|
|
6118
|
+
if (row.active === false) {
|
|
6119
|
+
already.push(c);
|
|
6120
|
+
continue;
|
|
6121
|
+
}
|
|
6122
|
+
await ctx.database.set('maibot_card_keys', { code: c }, { active: false });
|
|
6123
|
+
voided.push(c);
|
|
6124
|
+
}
|
|
6125
|
+
const parts = [];
|
|
6126
|
+
if (voided.length)
|
|
6127
|
+
parts.push(`✅ 已作废 ${voided.length} 条:\n${voided.join('\n')}`);
|
|
6128
|
+
if (already.length)
|
|
6129
|
+
parts.push(`ℹ️ 已是作废状态(跳过)${already.length} 条:\n${already.join('\n')}`);
|
|
6130
|
+
if (notFound.length)
|
|
6131
|
+
parts.push(`❌ 未找到 ${notFound.length} 条:\n${notFound.join('\n')}`);
|
|
6132
|
+
return parts.join('\n\n');
|
|
6069
6133
|
});
|
|
6070
6134
|
ctx.command('mai管理员导出卡密 [scope:text]', '导出卡密(无参为交互筛选;制表符文本)')
|
|
6071
6135
|
.userFields(['authority'])
|
|
@@ -6089,18 +6153,18 @@ function apply(ctx, config) {
|
|
|
6089
6153
|
else if (low === 'all' || low === '全部')
|
|
6090
6154
|
sc = 'all';
|
|
6091
6155
|
else {
|
|
6092
|
-
return '❌ 范围参数无效。请使用
|
|
6156
|
+
return '❌ 范围参数无效。请使用 all / unused / redeemed,或不带参数进入交互。';
|
|
6093
6157
|
}
|
|
6094
6158
|
}
|
|
6095
6159
|
else {
|
|
6096
|
-
await session.send('
|
|
6160
|
+
await session.send('【导出卡密】第一步:请选择兑换状态(回复序号):\n' +
|
|
6097
6161
|
'1 = 全部记录\n2 = 仅未使用(有效且未兑换)\n3 = 仅已兑换\n0 = 取消');
|
|
6098
6162
|
const r1 = await waitForUserReply(session, ctx, promptMs);
|
|
6099
6163
|
const ch1 = parseExportScopeInput(r1?.content || '');
|
|
6100
6164
|
if (ch1 === null || ch1 === 'cancel')
|
|
6101
6165
|
return '操作已取消或输入无效';
|
|
6102
6166
|
sc = ch1;
|
|
6103
|
-
await session.send('
|
|
6167
|
+
await session.send('第二步:是否按卡密类型再筛选?(回复序号)\n' +
|
|
6104
6168
|
'1 = 不筛选(全部类型)\n2 = 仅个人优先卡\n3 = 仅群组卡\n4 = 仅解绑卡\n0 = 取消');
|
|
6105
6169
|
const r2 = await waitForUserReply(session, ctx, promptMs);
|
|
6106
6170
|
const ch2 = parseExportKindFilterInput(r2?.content || '');
|
|
@@ -6161,6 +6225,122 @@ function apply(ctx, config) {
|
|
|
6161
6225
|
}
|
|
6162
6226
|
return '';
|
|
6163
6227
|
});
|
|
6228
|
+
ctx.command('mai取消群组优先', '取消本群群组优先(仅群组卡兑换人)')
|
|
6229
|
+
.action(async ({ session }) => {
|
|
6230
|
+
if (!session)
|
|
6231
|
+
return '❌ 无法获取会话信息';
|
|
6232
|
+
const whitelistCheck = checkWhitelist(session, config);
|
|
6233
|
+
if (!whitelistCheck.allowed) {
|
|
6234
|
+
return whitelistCheck.message || '本群暂时没有被授权使用本Bot的功能,请添加官方群聊1072033605。';
|
|
6235
|
+
}
|
|
6236
|
+
const gkey = (0, priority_cooldown_1.canonicalGuildPriorityKey)(session);
|
|
6237
|
+
if (!gkey)
|
|
6238
|
+
return '❌ 请在群聊内使用本指令。';
|
|
6239
|
+
const keys = await getSessionBindingKeys(ctx, session);
|
|
6240
|
+
const r = await (0, priority_cooldown_1.userCancelGroupPriority)(ctx, gkey, keys);
|
|
6241
|
+
return r.message;
|
|
6242
|
+
});
|
|
6243
|
+
ctx.command('mai群组优先换绑', '发起将本群群组优先迁移到其他群(仅兑换人)')
|
|
6244
|
+
.action(async ({ session }) => {
|
|
6245
|
+
if (!session)
|
|
6246
|
+
return '❌ 无法获取会话信息';
|
|
6247
|
+
const whitelistCheck = checkWhitelist(session, config);
|
|
6248
|
+
if (!whitelistCheck.allowed) {
|
|
6249
|
+
return whitelistCheck.message || '本群暂时没有被授权使用本Bot的功能,请添加官方群聊1072033605。';
|
|
6250
|
+
}
|
|
6251
|
+
const r = await (0, priority_cooldown_1.startGroupPriorityRebind)(ctx, session, async (s) => getSessionBindingKeys(ctx, s));
|
|
6252
|
+
return r.message;
|
|
6253
|
+
});
|
|
6254
|
+
ctx.command('mai群组优先换入', '在目标群完成群组优先换绑')
|
|
6255
|
+
.alias('mai群组优先换绑完成')
|
|
6256
|
+
.action(async ({ session }) => {
|
|
6257
|
+
if (!session)
|
|
6258
|
+
return '❌ 无法获取会话信息';
|
|
6259
|
+
const whitelistCheck = checkWhitelist(session, config);
|
|
6260
|
+
if (!whitelistCheck.allowed) {
|
|
6261
|
+
return whitelistCheck.message || '本群暂时没有被授权使用本Bot的功能,请添加官方群聊1072033605。';
|
|
6262
|
+
}
|
|
6263
|
+
const r = await (0, priority_cooldown_1.completeGroupPriorityRebind)(ctx, session, async (s) => getSessionBindingKeys(ctx, s));
|
|
6264
|
+
return r.message;
|
|
6265
|
+
});
|
|
6266
|
+
ctx.command('mai管理员取消群组优先 [guildKey:text]', '取消指定群或当前群的群组优先')
|
|
6267
|
+
.userFields(['authority'])
|
|
6268
|
+
.action(async ({ session }, guildKey) => {
|
|
6269
|
+
if (!session)
|
|
6270
|
+
return '❌ 无法获取会话信息';
|
|
6271
|
+
if ((session.user?.authority ?? 0) < authLevelForCardAdmin) {
|
|
6272
|
+
return `❌ 权限不足,需要 auth 等级 ${authLevelForCardAdmin} 以上`;
|
|
6273
|
+
}
|
|
6274
|
+
const gk = (guildKey?.trim() || (0, priority_cooldown_1.canonicalGuildPriorityKey)(session) || '').trim();
|
|
6275
|
+
if (!gk) {
|
|
6276
|
+
return '❌ 请填写群标识(如 qq:123456),或在群聊内使用并不带参数。';
|
|
6277
|
+
}
|
|
6278
|
+
const did = await (0, priority_cooldown_1.adminRemoveGroupPriorityRow)(ctx, gk);
|
|
6279
|
+
return did ? `✅ 已取消群组优先:${gk}` : `ℹ️ 该群无群组优先记录:${gk}`;
|
|
6280
|
+
});
|
|
6281
|
+
ctx.command('mai管理员取消个人优先 <targetUserId:text>', '清除目标用户的个人优先记录')
|
|
6282
|
+
.userFields(['authority'])
|
|
6283
|
+
.action(async ({ session }, targetUserId) => {
|
|
6284
|
+
if (!session)
|
|
6285
|
+
return '❌ 无法获取会话信息';
|
|
6286
|
+
if ((session.user?.authority ?? 0) < authLevelForCardAdmin) {
|
|
6287
|
+
return `❌ 权限不足,需要 auth 等级 ${authLevelForCardAdmin} 以上`;
|
|
6288
|
+
}
|
|
6289
|
+
if (!targetUserId?.trim()) {
|
|
6290
|
+
return '❌ 请指定用户,例如:/mai管理员取消个人优先 @用户 或 数字ID';
|
|
6291
|
+
}
|
|
6292
|
+
const candidates = await resolveCooldownKeyCandidatesForBypass(session, targetUserId);
|
|
6293
|
+
if (!candidates.length) {
|
|
6294
|
+
return '❌ 无法解析目标用户,请使用 @用户 或数字 ID';
|
|
6295
|
+
}
|
|
6296
|
+
const n = await (0, priority_cooldown_1.adminRemovePersonalPriorityRows)(ctx, candidates);
|
|
6297
|
+
return `✅ 已清除 ${n} 条个人优先记录。\n匹配键:${candidates.join('、')}`;
|
|
6298
|
+
});
|
|
6299
|
+
ctx.command('mai管理员设置个人优先 <targetUserId:text> <spec:text>', '设置个人优先:永久 / 时长 / clear')
|
|
6300
|
+
.userFields(['authority'])
|
|
6301
|
+
.action(async ({ session }, targetUserId, spec) => {
|
|
6302
|
+
if (!session)
|
|
6303
|
+
return '❌ 无法获取会话信息';
|
|
6304
|
+
if ((session.user?.authority ?? 0) < authLevelForCardAdmin) {
|
|
6305
|
+
return `❌ 权限不足,需要 auth 等级 ${authLevelForCardAdmin} 以上`;
|
|
6306
|
+
}
|
|
6307
|
+
if (!targetUserId?.trim() || !spec?.trim()) {
|
|
6308
|
+
return '❌ 用法:/mai管理员设置个人优先 <@或ID> <永久|7d|clear>';
|
|
6309
|
+
}
|
|
6310
|
+
const sp = (0, priority_cooldown_1.parsePriorityAdminSpec)(spec);
|
|
6311
|
+
if (sp === null) {
|
|
6312
|
+
return '❌ 无效的 spec,示例:永久、7d、30d、clear';
|
|
6313
|
+
}
|
|
6314
|
+
const candidates = await resolveCooldownKeyCandidatesForBypass(session, targetUserId);
|
|
6315
|
+
if (!candidates.length) {
|
|
6316
|
+
return '❌ 无法解析目标用户';
|
|
6317
|
+
}
|
|
6318
|
+
const r = await (0, priority_cooldown_1.adminSetPersonalPriorityForUserIds)(ctx, candidates, sp);
|
|
6319
|
+
return r.message;
|
|
6320
|
+
});
|
|
6321
|
+
ctx.command('mai管理员设置群组优先 <spec:text>', '直接设置群组优先(-g 指定群,默认当前群)')
|
|
6322
|
+
.userFields(['authority'])
|
|
6323
|
+
.option('guild', '-g <guildKey:string> 群标识,如 qq:群号')
|
|
6324
|
+
.action(async ({ session, options }, spec) => {
|
|
6325
|
+
if (!session)
|
|
6326
|
+
return '❌ 无法获取会话信息';
|
|
6327
|
+
if ((session.user?.authority ?? 0) < authLevelForCardAdmin) {
|
|
6328
|
+
return `❌ 权限不足,需要 auth 等级 ${authLevelForCardAdmin} 以上`;
|
|
6329
|
+
}
|
|
6330
|
+
if (!spec?.trim()) {
|
|
6331
|
+
return '❌ 用法:/mai管理员设置群组优先 <永久|7d|clear> [-g 群标识]';
|
|
6332
|
+
}
|
|
6333
|
+
const sp = (0, priority_cooldown_1.parsePriorityAdminSpec)(spec);
|
|
6334
|
+
if (sp === null) {
|
|
6335
|
+
return '❌ 无效的 spec,示例:永久、7d、clear';
|
|
6336
|
+
}
|
|
6337
|
+
const gk = (String(options?.guild ?? '').trim() || (0, priority_cooldown_1.canonicalGuildPriorityKey)(session) || '').trim();
|
|
6338
|
+
if (!gk) {
|
|
6339
|
+
return '❌ 请使用 -g 指定群标识(platform:guildId),或在群聊内执行。';
|
|
6340
|
+
}
|
|
6341
|
+
const r = await (0, priority_cooldown_1.adminSetGroupPriorityForGuild)(ctx, gk, sp);
|
|
6342
|
+
return r.message;
|
|
6343
|
+
});
|
|
6164
6344
|
ctx.command('maibypass <targetUserId:text>', '清除指定用户的全部指令冷却(需要 auth 等级,默认 4)')
|
|
6165
6345
|
.alias('mai管理员清除冷却')
|
|
6166
6346
|
.userFields(['authority'])
|