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
- const data = await this.ctx.http.get(this.API_URL);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-maichuni-scorehelper",
3
- "version": "0.0.10-test",
3
+ "version": "0.0.12-test",
4
4
  "description": "一个基础的 Koishi 插件,未来用于舞萌中二节奏分数辅助。",
5
5
  "keywords": [
6
6
  "koishi",
@@ -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
- const data = await this.ctx.http.get(this.API_URL)
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) {