Add resource health management and enhance message parsing

Introduces a ResourceManager for health checking and retry logic in src/common/health.ts. Updates OneBot message parsing to support disabling URL fetching and multi-message parsing via new payload options. File, image, video, and ptt URL retrievals now use resource health management for improved reliability. Also refactors packet API to allow configurable timeout for FetchRkey.
#1220
This commit is contained in:
手瓜一十雪
2025-09-02 21:19:49 +08:00
parent 78bf20bc3b
commit 5b2ff5acd3
6 changed files with 404 additions and 26 deletions

View File

@@ -14,7 +14,9 @@ const SchemaData = Type.Object({
user_id: Type.String(),
message_seq: Type.Optional(Type.String()),
count: Type.Number({ default: 20 }),
reverseOrder: Type.Boolean({ default: false })
reverseOrder: Type.Boolean({ default: false }),
disableGetUrl: Type.Boolean({ default: false }),
parseMultMsg: Type.Boolean({ default: true })
});
@@ -41,7 +43,7 @@ export default class GetFriendMsgHistory extends OneBotAction<Payload, Response>
}));
//烘焙消息
const ob11MsgList = (await Promise.all(
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat)))
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat, payload.parseMultMsg, payload.disableGetUrl)))
).filter(msg => msg !== undefined);
return { 'messages': ob11MsgList };
}

View File

@@ -14,7 +14,9 @@ const SchemaData = Type.Object({
group_id: Type.String(),
message_seq: Type.Optional(Type.String()),
count: Type.Number({ default: 20 }),
reverseOrder: Type.Boolean({ default: false })
reverseOrder: Type.Boolean({ default: false }),
disableGetUrl: Type.Boolean({ default: false }),
parseMultMsg: Type.Boolean({ default: true }),
});
@@ -39,7 +41,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction<Payload, Re
}));
//烘焙消息
const ob11MsgList = (await Promise.all(
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat)))
msgList.map(msg => this.obContext.apis.MsgApi.parseMessage(msg, config.messagePostFormat, payload.parseMultMsg, payload.disableGetUrl)))
).filter(msg => msg !== undefined);
return { 'messages': ob11MsgList };
}