koishi-plugin-maichuni-scorehelper 0.0.10-test → 0.0.12-test
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.
|
@@ -118,6 +118,11 @@ class MaimaiStatus extends koishi_1.Service {
|
|
|
118
118
|
}
|
|
119
119
|
const list = heartbeatData.heartbeatList;
|
|
120
120
|
if (!list) {
|
|
121
|
+
// 兼容直接返回 heartbeatList 的情况(某些部署可能直接返回对象)
|
|
122
|
+
if (heartbeatData && typeof heartbeatData === 'object' && !Array.isArray(heartbeatData)) {
|
|
123
|
+
this.clientLogger.warn('Heartbeat data missing heartbeatList, using raw object keys fallback.');
|
|
124
|
+
return await this.analyzeAndNotify(heartbeatData);
|
|
125
|
+
}
|
|
121
126
|
this.clientLogger.warn('Heartbeat data format invalid: list missing', Object.keys(heartbeatData));
|
|
122
127
|
return;
|
|
123
128
|
}
|
|
@@ -288,7 +293,18 @@ class MaimaiStatus extends koishi_1.Service {
|
|
|
288
293
|
*/
|
|
289
294
|
async fetchHeartbeats() {
|
|
290
295
|
try {
|
|
291
|
-
|
|
296
|
+
let data = await this.ctx.http.get(this.API_URL);
|
|
297
|
+
// 如果不是对象,尝试解析 JSON (因为 Object.keys 打印出了索引,说明是字符串)
|
|
298
|
+
if (typeof data === 'string') {
|
|
299
|
+
try {
|
|
300
|
+
data = JSON.parse(data);
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
const snippet = data.slice(0, 200);
|
|
304
|
+
this.clientLogger.warn(`Heartbeat JSON parse failed: ${err.message}; snippet=${snippet}`);
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
292
308
|
// 返回原始对象,包含 heartbeatList 和 uptimeList
|
|
293
309
|
return data || {};
|
|
294
310
|
}
|
package/package.json
CHANGED
|
@@ -164,6 +164,11 @@ export class MaimaiStatus extends Service {
|
|
|
164
164
|
|
|
165
165
|
const list = heartbeatData.heartbeatList
|
|
166
166
|
if (!list) {
|
|
167
|
+
// 兼容直接返回 heartbeatList 的情况(某些部署可能直接返回对象)
|
|
168
|
+
if (heartbeatData && typeof heartbeatData === 'object' && !Array.isArray(heartbeatData)) {
|
|
169
|
+
this.clientLogger.warn('Heartbeat data missing heartbeatList, using raw object keys fallback.')
|
|
170
|
+
return await this.analyzeAndNotify(heartbeatData)
|
|
171
|
+
}
|
|
167
172
|
this.clientLogger.warn('Heartbeat data format invalid: list missing', Object.keys(heartbeatData))
|
|
168
173
|
return
|
|
169
174
|
}
|
|
@@ -346,7 +351,19 @@ export class MaimaiStatus extends Service {
|
|
|
346
351
|
*/
|
|
347
352
|
private async fetchHeartbeats(): Promise<any> {
|
|
348
353
|
try {
|
|
349
|
-
|
|
354
|
+
let data = await this.ctx.http.get(this.API_URL)
|
|
355
|
+
|
|
356
|
+
// 如果不是对象,尝试解析 JSON (因为 Object.keys 打印出了索引,说明是字符串)
|
|
357
|
+
if (typeof data === 'string') {
|
|
358
|
+
try {
|
|
359
|
+
data = JSON.parse(data)
|
|
360
|
+
} catch (err) {
|
|
361
|
+
const snippet = data.slice(0, 200)
|
|
362
|
+
this.clientLogger.warn(`Heartbeat JSON parse failed: ${(err as any).message}; snippet=${snippet}`)
|
|
363
|
+
return null
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
350
367
|
// 返回原始对象,包含 heartbeatList 和 uptimeList
|
|
351
368
|
return data || {}
|
|
352
369
|
} catch (e) {
|