From 9f913988758717f9ae623c2f423e59daa6d64812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 26 Jul 2024 11:30:04 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E5=86=8D=E6=AC=A1=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8F=91=E9=80=81=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msg/SendMsg/create-send-elements.ts | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/onebot11/action/msg/SendMsg/create-send-elements.ts b/src/onebot11/action/msg/SendMsg/create-send-elements.ts index 8ed46da0..915732b8 100644 --- a/src/onebot11/action/msg/SendMsg/create-send-elements.ts +++ b/src/onebot11/action/msg/SendMsg/create-send-elements.ts @@ -70,9 +70,9 @@ const _handlers: { // This picks the correct message type out // How great the type system of TypeScript is! context: MessageContext - ) => SendMessageElement | undefined | Promise + ) => Promise } = { - [OB11MessageDataType.text]: ({ data: { text } }) => SendMsgElementConstructor.text(text), + [OB11MessageDataType.text]: async ({ data: { text } }) => SendMsgElementConstructor.text(text), [OB11MessageDataType.at]: async ({ data: { qq: atQQ } }, context) => { if (!context.group) return undefined; @@ -94,9 +94,9 @@ const _handlers: { undefined; }, - [OB11MessageDataType.face]: ({ data: { id } }) => SendMsgElementConstructor.face(parseInt(id)), + [OB11MessageDataType.face]: async ({ data: { id } }) => SendMsgElementConstructor.face(parseInt(id)), - [OB11MessageDataType.mface]: ({ + [OB11MessageDataType.mface]: async ({ data: { emoji_package_id, emoji_id, @@ -146,13 +146,13 @@ const _handlers: { [OB11MessageDataType.voice]: async (sendMsg, context) => SendMsgElementConstructor.ptt((await handleOb11FileLikeMessage(sendMsg, context)).path), - [OB11MessageDataType.json]: ({ data: { data } }) => SendMsgElementConstructor.ark(data), + [OB11MessageDataType.json]: async ({ data: { data } }) => SendMsgElementConstructor.ark(data), - [OB11MessageDataType.dice]: ({ data: { result } }) => SendMsgElementConstructor.dice(result), + [OB11MessageDataType.dice]: async ({ data: { result } }) => SendMsgElementConstructor.dice(result), - [OB11MessageDataType.RPS]: ({ data: { result } }) => SendMsgElementConstructor.rps(result), + [OB11MessageDataType.RPS]: async ({ data: { result } }) => SendMsgElementConstructor.rps(result), - [OB11MessageDataType.markdown]: ({ data: { content } }) => SendMsgElementConstructor.markdown(content), + [OB11MessageDataType.markdown]: async ({ data: { content } }) => SendMsgElementConstructor.markdown(content), [OB11MessageDataType.music]: async ({ data }) => { // 保留, 直到...找到更好的解决方案 @@ -204,13 +204,13 @@ const _handlers: { } }, - [OB11MessageDataType.node]: () => undefined, + [OB11MessageDataType.node]: async () => undefined, - [OB11MessageDataType.forward]: () => undefined, + [OB11MessageDataType.forward]: async () => undefined, - [OB11MessageDataType.xml]: () => undefined, + [OB11MessageDataType.xml]: async () => undefined, - [OB11MessageDataType.poke]: () => undefined, + [OB11MessageDataType.poke]: async () => undefined, [OB11MessageDataType.Location]: async () => { return SendMsgElementConstructor.location(); @@ -221,7 +221,7 @@ const handlers = <{ [Key in OB11MessageDataType]: ( sendMsg: OB11MessageData, context: MessageContext - ) => SendMessageElement | undefined | Promise + ) => Promise }>_handlers; export default async function createSendElements( @@ -229,18 +229,20 @@ export default async function createSendElements( group?: Group, ignoreTypes: OB11MessageDataType[] = [] ) { - const sendElements: SendMessageElement[] = []; const deleteAfterSentFiles: string[] = []; + let callResultList: Array> = []; for (const sendMsg of messageData) { if (ignoreTypes.includes(sendMsg.type)) { continue; } - const callResult = await handlers[sendMsg.type]( + const callResult = handlers[sendMsg.type]( sendMsg, { group, deleteAfterSentFiles } - ); - if (callResult) sendElements.push(callResult); + )?.catch(undefined); + callResultList.push(callResult); } + let ret = await Promise.all(callResultList); + const sendElements: SendMessageElement[] = ret.filter(ele => ele) as SendMessageElement[]; return { sendElements, deleteAfterSentFiles }; }