koishi-plugin-maibot 1.0.8 → 1.0.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-maibot",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "舞萌DX游戏高级操作插件 for Koishi - 支持用户绑定、B50更新、1.5倍票获取等功能",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/lib/maimile.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Logger } from 'koishi';
2
- export declare function grantMaiMile(actualUserId: number | string, maiMile: number, logger?: Logger): Promise<void>;
3
- //# sourceMappingURL=maimile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"maimile.d.ts","sourceRoot":"","sources":["../src/maimile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAyI/B,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,GAAG,MAAM,EAC7B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkZf"}
package/lib/maimile.js DELETED
@@ -1,485 +0,0 @@
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.grantMaiMile = grantMaiMile;
7
- const axios_1 = __importDefault(require("axios"));
8
- const zlib_1 = require("zlib");
9
- const crypto_1 = require("crypto");
10
- const constants_1 = require("./constants");
11
- const BASE_URL = 'https://maimai-gm.wahlap.com:42081/Maimai2Servlet/mE2s3Jhd/';
12
- const AES_KEY = Buffer.from('a>32bVP7v<63BVLkY[xM>daZ1s9MBP<R', 'utf-8');
13
- const AES_IV = Buffer.from('d6xHIKq]1J]Dt^ue', 'utf-8');
14
- const OBFUSCATE_PARAM = 'B44df8yT';
15
- const MAI_ENCODING = '1.50';
16
- const DEFAULT_LOGIN_TIMESTAMP = 114514;
17
- const sdgbClient = axios_1.default.create({
18
- baseURL: BASE_URL,
19
- timeout: 15000,
20
- responseType: 'arraybuffer',
21
- validateStatus: (status) => status >= 200 && status < 500,
22
- });
23
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
24
- function getShanghaiDate(date = new Date()) {
25
- const utc = date.getTime() + date.getTimezoneOffset() * 60000;
26
- return new Date(utc + 8 * 60 * 60000);
27
- }
28
- function formatDate(date = new Date()) {
29
- const base = getShanghaiDate(date);
30
- const y = base.getUTCFullYear();
31
- const m = `${base.getUTCMonth() + 1}`.padStart(2, '0');
32
- const d = `${base.getUTCDate()}`.padStart(2, '0');
33
- return `${y}-${m}-${d}`;
34
- }
35
- function formatDateTime(date = new Date()) {
36
- const base = getShanghaiDate(date);
37
- const y = base.getUTCFullYear();
38
- const m = `${base.getUTCMonth() + 1}`.padStart(2, '0');
39
- const d = `${base.getUTCDate()}`.padStart(2, '0');
40
- const h = `${base.getUTCHours()}`.padStart(2, '0');
41
- const min = `${base.getUTCMinutes()}`.padStart(2, '0');
42
- const s = `${base.getUTCSeconds()}`.padStart(2, '0');
43
- return `${y}-${m}-${d} ${h}:${min}:${s}`;
44
- }
45
- function calcRandom() {
46
- const max = 1037933;
47
- let num2 = (0, crypto_1.randomInt)(1, max + 1) * 2069 + 1024;
48
- let num3 = 0;
49
- for (let i = 0; i < 32; i += 1) {
50
- num3 <<= 1;
51
- num3 += num2 % 2;
52
- num2 >>= 1;
53
- }
54
- return num3;
55
- }
56
- function encrypt(data) {
57
- const cipher = (0, crypto_1.createCipheriv)('aes-256-cbc', AES_KEY, AES_IV);
58
- cipher.setAutoPadding(true);
59
- return Buffer.concat([cipher.update(data), cipher.final()]);
60
- }
61
- function decrypt(data) {
62
- const decipher = (0, crypto_1.createDecipheriv)('aes-256-cbc', AES_KEY, AES_IV);
63
- decipher.setAutoPadding(true);
64
- return Buffer.concat([decipher.update(data), decipher.final()]);
65
- }
66
- async function sdgbApi(payload, apiName) {
67
- const body = typeof payload === 'string' ? payload : JSON.stringify(payload);
68
- const compressed = (0, zlib_1.deflateSync)(Buffer.from(body, 'utf-8'));
69
- const encrypted = encrypt(compressed);
70
- const obfuscator = (0, crypto_1.createHash)('md5').update(`${apiName}MaimaiChn${OBFUSCATE_PARAM}`).digest('hex');
71
- const headers = {
72
- 'Content-Type': 'application/json',
73
- 'User-Agent': obfuscator,
74
- charset: 'UTF-8',
75
- 'Mai-Encoding': MAI_ENCODING,
76
- 'Content-Encoding': 'deflate',
77
- 'Accept-Encoding': '',
78
- };
79
- const response = await sdgbClient.post(obfuscator, encrypted, { headers });
80
- if (response.status >= 400) {
81
- const err = new Error(`请求 ${apiName} 失败,状态码: ${response.status}`);
82
- err.response = response;
83
- throw err;
84
- }
85
- const raw = Buffer.from(response.data);
86
- const decrypted = decrypt(raw);
87
- const decoded = decrypted[0] === 0x78 ? (0, zlib_1.inflateSync)(decrypted).toString('utf-8') : decrypted.toString('utf-8');
88
- try {
89
- return JSON.parse(decoded);
90
- }
91
- catch (error) {
92
- throw new Error(`解析 ${apiName} 响应失败: ${decoded.slice(0, 128)}`);
93
- }
94
- }
95
- async function retryFlow(fn, options, logger) {
96
- let attempt = 0;
97
- const { maxRetries, initialDelay } = options;
98
- while (attempt < maxRetries) {
99
- try {
100
- return await fn();
101
- }
102
- catch (error) {
103
- attempt += 1;
104
- const axiosError = error;
105
- const status = axiosError.response?.status;
106
- const delay = Math.min(initialDelay * 2 ** (attempt - 1), 30000);
107
- logger?.warn(`舞里程流程失败(第${attempt}次,HTTP ${status ?? '未知'}),将在 ${delay / 1000}s 后重试:${axiosError.message}`);
108
- if (attempt >= maxRetries) {
109
- throw error;
110
- }
111
- await sleep(delay);
112
- }
113
- }
114
- return fn();
115
- }
116
- function toNumber(value, fallback = 0) {
117
- const num = Number(value);
118
- return Number.isFinite(num) ? num : fallback;
119
- }
120
- async function grantMaiMile(actualUserId, maiMile, logger) {
121
- const userId = Number(actualUserId);
122
- if (!Number.isInteger(userId)) {
123
- throw new Error('用户ID格式不正确,无法执行舞里程流程');
124
- }
125
- if (!Number.isInteger(maiMile) || maiMile <= 0) {
126
- throw new Error('舞里程必须是正整数');
127
- }
128
- const loginTimestamp = DEFAULT_LOGIN_TIMESTAMP;
129
- const baseMachine = {
130
- regionId: constants_1.DEFAULT_MACHINE_INFO.regionId,
131
- placeId: constants_1.DEFAULT_MACHINE_INFO.placeId,
132
- clientId: constants_1.DEFAULT_MACHINE_INFO.clientId,
133
- };
134
- await sdgbApi({
135
- userId,
136
- regionId: baseMachine.regionId,
137
- placeId: baseMachine.placeId,
138
- clientId: baseMachine.clientId,
139
- dateTime: loginTimestamp,
140
- type: 1,
141
- }, 'UserLogoutApi');
142
- const loginResult = await sdgbApi({
143
- userId,
144
- accessCode: '',
145
- regionId: baseMachine.regionId,
146
- placeId: baseMachine.placeId,
147
- clientId: baseMachine.clientId,
148
- dateTime: loginTimestamp,
149
- isContinue: false,
150
- genericFlag: 0,
151
- }, 'UserLoginApi');
152
- if (loginResult.returnCode !== 1) {
153
- throw new Error('登录失败,服务器未返回成功状态');
154
- }
155
- const loginId = loginResult.loginId;
156
- const loginDate = loginResult.lastLoginDate;
157
- let userDataResponse;
158
- for (let i = 0; i < 3; i += 1) {
159
- // eslint-disable-next-line no-await-in-loop
160
- const resp = await sdgbApi({ userId }, 'GetUserDataApi');
161
- if (resp?.userData?.playerRating != null) {
162
- userDataResponse = resp;
163
- break;
164
- }
165
- // eslint-disable-next-line no-await-in-loop
166
- await sleep(200);
167
- }
168
- if (!userDataResponse?.userData) {
169
- throw new Error('无法获取用户数据,请稍后重试');
170
- }
171
- const userData = userDataResponse.userData;
172
- const userExtend = await sdgbApi({ userId }, 'GetUserExtendApi');
173
- const userOption = await sdgbApi({ userId }, 'GetUserOptionApi');
174
- const userRating = await sdgbApi({ userId }, 'GetUserRatingApi');
175
- const userActivity = await sdgbApi({ userId }, 'GetUserActivityApi');
176
- const userCharge = await sdgbApi({ userId }, 'GetUserChargeApi');
177
- const userMission = await sdgbApi({ userId }, 'GetUserMissionDataApi');
178
- const playDate = formatDate();
179
- const playDateTime = `${formatDateTime()}.0`;
180
- await retryFlow(() => sdgbApi({
181
- userId,
182
- userPlaylogList: [
183
- {
184
- userId: 0,
185
- orderId: 0,
186
- playlogId: loginId,
187
- version: 1050000,
188
- placeId: baseMachine.placeId,
189
- placeName: constants_1.DEFAULT_MACHINE_INFO.placeName,
190
- loginDate: loginTimestamp,
191
- playDate,
192
- userPlayDate: playDateTime,
193
- type: 0,
194
- musicId: 0,
195
- level: 1,
196
- trackNo: 1,
197
- vsMode: 0,
198
- vsUserName: '',
199
- vsStatus: 0,
200
- vsUserRating: 0,
201
- vsUserAchievement: 0,
202
- vsUserGradeRank: 0,
203
- vsRank: 0,
204
- playerNum: 3,
205
- playedUserId1: 0,
206
- playedUserName1: '',
207
- playedMusicLevel1: 0,
208
- playedUserId2: 0,
209
- playedUserName2: '',
210
- playedMusicLevel2: 0,
211
- playedUserId3: 0,
212
- playedUserName3: '',
213
- playedMusicLevel3: 0,
214
- characterId1: 101,
215
- characterLevel1: 2,
216
- characterAwakening1: 6,
217
- characterId2: 101,
218
- characterLevel2: 2,
219
- characterAwakening2: 6,
220
- characterId3: 101,
221
- characterLevel3: 2,
222
- characterAwakening3: 6,
223
- characterId4: 101,
224
- characterLevel4: 2,
225
- characterAwakening4: 6,
226
- characterId5: 101,
227
- characterLevel5: 2,
228
- characterAwakening5: 6,
229
- achievement: 0,
230
- deluxscore: 0,
231
- scoreRank: 0,
232
- maxCombo: 0,
233
- totalCombo: 1,
234
- maxSync: 0,
235
- totalSync: 0,
236
- tapCriticalPerfect: 0,
237
- tapPerfect: 0,
238
- tapGreat: 0,
239
- tapGood: 0,
240
- tapMiss: 1,
241
- holdCriticalPerfect: 0,
242
- holdPerfect: 0,
243
- holdGreat: 0,
244
- holdGood: 0,
245
- holdMiss: 1,
246
- slideCriticalPerfect: 0,
247
- slidePerfect: 0,
248
- slideGreat: 0,
249
- slideGood: 0,
250
- slideMiss: 1,
251
- touchCriticalPerfect: 0,
252
- touchPerfect: 0,
253
- touchGreat: 0,
254
- touchGood: 0,
255
- touchMiss: 1,
256
- breakCriticalPerfect: 0,
257
- breakPerfect: 0,
258
- breakGreat: 0,
259
- breakGood: 0,
260
- breakMiss: 1,
261
- isTap: 'True',
262
- isHold: 'True',
263
- isSlide: 'True',
264
- isTouch: 'True',
265
- isBreak: 'True',
266
- isCriticalDisp: 'True',
267
- isFastLateDisp: 'True',
268
- fastCount: 1,
269
- lateCount: 1,
270
- isAchieveNewRecord: 'False',
271
- isDeluxscoreNewRecord: 'False',
272
- comboStatus: 0,
273
- syncStatus: 0,
274
- isClear: 'False',
275
- beforeRating: userData.playerRating,
276
- afterRating: userData.playerRating,
277
- beforeGrade: 0,
278
- afterGrade: 0,
279
- afterGradeRank: 20,
280
- beforeDeluxRating: userData.playerRating,
281
- afterDeluxRating: userData.playerRating,
282
- isPlayTutorial: 'False',
283
- isEventMode: 'False',
284
- isFreedomMode: 'False',
285
- playMode: 0,
286
- isNewFree: 'False',
287
- trialPlayAchievement: -1,
288
- extNum1: 0,
289
- extNum2: 0,
290
- extNum4: 3020,
291
- },
292
- ],
293
- }, 'UploadUserPlaylogListApi').then((result) => {
294
- if (result.returnCode !== 1) {
295
- throw new Error(`Userlog上传失败,返回码: ${result.returnCode}`);
296
- }
297
- return result;
298
- }), { maxRetries: 10, initialDelay: 2000 }, logger);
299
- const now = new Date();
300
- const weeklyData = userMission?.userWeeklyData ?? {};
301
- await retryFlow(() => sdgbApi({
302
- userId,
303
- playlogId: loginId,
304
- isEventMode: 'False',
305
- isFreePlay: 'False',
306
- upsertUserAll: {
307
- userData: [
308
- {
309
- accessCode: '',
310
- userName: userData.userName,
311
- isNetMember: 1,
312
- point: maiMile,
313
- totalPoint: toNumber(userData.totalPoint) + maiMile,
314
- iconId: userData.iconId,
315
- plateId: userData.plateId,
316
- titleId: userData.titleId,
317
- partnerId: userData.partnerId,
318
- frameId: userData.frameId,
319
- selectMapId: userData.selectMapId,
320
- totalAwake: userData.totalAwake,
321
- gradeRating: userData.gradeRating,
322
- musicRating: userData.musicRating,
323
- playerRating: userData.playerRating,
324
- highestRating: userData.highestRating,
325
- gradeRank: userData.gradeRank,
326
- classRank: userData.classRank,
327
- courseRank: userData.courseRank,
328
- charaSlot: userData.charaSlot,
329
- charaLockSlot: userData.charaLockSlot,
330
- contentBit: userData.contentBit,
331
- playCount: toNumber(userData.playCount) + 1,
332
- currentPlayCount: toNumber(userData.currentPlayCount) + 1,
333
- renameCredit: 0,
334
- mapStock: userData.mapStock,
335
- eventWatchedDate: userData.eventWatchedDate,
336
- lastGameId: 'SDGB',
337
- lastRomVersion: userData.lastRomVersion,
338
- lastDataVersion: userData.lastDataVersion,
339
- lastLoginDate: loginDate,
340
- lastPlayDate: formatDateTime(now),
341
- lastPlayCredit: 1,
342
- lastPlayMode: 0,
343
- lastPlaceId: baseMachine.placeId,
344
- lastPlaceName: constants_1.DEFAULT_MACHINE_INFO.placeName,
345
- lastAllNetId: 0,
346
- lastRegionId: baseMachine.regionId,
347
- lastRegionName: constants_1.DEFAULT_MACHINE_INFO.regionName,
348
- lastClientId: baseMachine.clientId,
349
- lastCountryCode: 'CHN',
350
- lastSelectEMoney: 0,
351
- lastSelectTicket: 0,
352
- lastSelectCourse: userData.lastSelectCourse,
353
- lastCountCourse: 0,
354
- firstGameId: 'SDGB',
355
- firstRomVersion: userData.firstRomVersion,
356
- firstDataVersion: userData.firstDataVersion,
357
- firstPlayDate: userData.firstPlayDate,
358
- compatibleCmVersion: userData.compatibleCmVersion,
359
- dailyBonusDate: userData.dailyBonusDate,
360
- dailyCourseBonusDate: userData.dailyCourseBonusDate,
361
- lastPairLoginDate: userData.lastPairLoginDate,
362
- lastTrialPlayDate: userData.lastTrialPlayDate,
363
- playVsCount: 0,
364
- playSyncCount: 0,
365
- winCount: 0,
366
- helpCount: 0,
367
- comboCount: 0,
368
- totalDeluxscore: userData.totalDeluxscore,
369
- totalBasicDeluxscore: userData.totalBasicDeluxscore,
370
- totalAdvancedDeluxscore: userData.totalAdvancedDeluxscore,
371
- totalExpertDeluxscore: userData.totalExpertDeluxscore,
372
- totalMasterDeluxscore: userData.totalMasterDeluxscore,
373
- totalReMasterDeluxscore: userData.totalReMasterDeluxscore,
374
- totalSync: userData.totalSync,
375
- totalBasicSync: userData.totalBasicSync,
376
- totalAdvancedSync: userData.totalAdvancedSync,
377
- totalExpertSync: userData.totalExpertSync,
378
- totalMasterSync: userData.totalMasterSync,
379
- totalReMasterSync: userData.totalReMasterSync,
380
- totalAchievement: userData.totalAchievement,
381
- totalBasicAchievement: userData.totalBasicAchievement,
382
- totalAdvancedAchievement: userData.totalAdvancedAchievement,
383
- totalExpertAchievement: userData.totalExpertAchievement,
384
- totalMasterAchievement: userData.totalMasterAchievement,
385
- totalReMasterAchievement: userData.totalReMasterAchievement,
386
- playerOldRating: userData.playerOldRating,
387
- playerNewRating: userData.playerNewRating,
388
- banState: 0,
389
- friendRegistSkip: userData.friendRegistSkip,
390
- dateTime: loginTimestamp,
391
- },
392
- ],
393
- userExtend: [userExtend?.userExtend ?? {}],
394
- userOption: [userOption?.userOption ?? {}],
395
- userCharacterList: [],
396
- userGhost: [],
397
- userMapList: [],
398
- userLoginBonusList: [],
399
- userRatingList: [userRating?.userRating ?? {}],
400
- userItemList: [],
401
- userMusicDetailList: [
402
- {
403
- musicId: 0,
404
- level: 1,
405
- playCount: 1,
406
- achievement: 0,
407
- comboStatus: 0,
408
- syncStatus: 0,
409
- deluxscoreMax: 0,
410
- scoreRank: 0,
411
- extNum1: 0,
412
- },
413
- ],
414
- userCourseList: [],
415
- userFriendSeasonRankingList: [],
416
- userChargeList: userCharge?.userChargeList ?? [],
417
- userFavoriteList: [],
418
- userActivityList: [userActivity?.userActivity ?? {}],
419
- userMissionDataList: userMission?.userMissionDataList ?? [],
420
- userWeeklyData: {
421
- lastLoginWeek: weeklyData.lastLoginWeek ?? 0,
422
- beforeLoginWeek: weeklyData.beforeLoginWeek ?? 0,
423
- friendBonusFlag: weeklyData.friendBonusFlag ?? 0,
424
- },
425
- userGamePlaylogList: [
426
- {
427
- playlogId: loginId,
428
- version: '1.50.00',
429
- playDate: `${formatDateTime(now)}.0`,
430
- playMode: 0,
431
- useTicketId: -1,
432
- playCredit: 1,
433
- playTrack: 1,
434
- clientId: baseMachine.clientId,
435
- isPlayTutorial: 'False',
436
- isEventMode: 'False',
437
- isNewFree: 'False',
438
- playCount: toNumber(userData.playCount) + 1,
439
- playSpecial: calcRandom(),
440
- playOtherUserId: 0,
441
- },
442
- ],
443
- user2pPlaylog: {
444
- userId1: 0,
445
- userId2: 0,
446
- userName1: '',
447
- userName2: '',
448
- regionId: 0,
449
- placeId: 0,
450
- user2pPlaylogDetailList: [],
451
- },
452
- userIntimateList: [],
453
- userShopItemStockList: [],
454
- userGetPointList: [],
455
- userTradeItemList: [],
456
- userFavoritemusicList: [],
457
- userKaleidxScopeList: [],
458
- isNewCharacterList: '',
459
- isNewMapList: '',
460
- isNewLoginBonusList: '',
461
- isNewItemList: '',
462
- isNewMusicDetailList: '1',
463
- isNewCourseList: '',
464
- isNewFavoriteList: '',
465
- isNewFriendSeasonRankingList: '',
466
- isNewUserIntimateList: '',
467
- isNewFavoritemusicList: '',
468
- isNewKaleidxScopeList: '',
469
- },
470
- }, 'UpsertUserAllApi').then((result) => {
471
- if (result.returnCode !== 1) {
472
- throw new Error(`UserAll上传失败,返回码: ${result.returnCode}`);
473
- }
474
- return result;
475
- }), { maxRetries: 10, initialDelay: 2000 }, logger);
476
- await sdgbApi({
477
- userId,
478
- regionId: baseMachine.regionId,
479
- placeId: baseMachine.placeId,
480
- clientId: baseMachine.clientId,
481
- dateTime: loginTimestamp,
482
- type: 1,
483
- }, 'UserLogoutApi');
484
- }
485
- //# sourceMappingURL=maimile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"maimile.js","sourceRoot":"","sources":["../src/maimile.ts"],"names":[],"mappings":"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"}