build: 再次优化发送速度

This commit is contained in:
手瓜一十雪
2024-07-26 11:30:04 +08:00
parent 34d19a471a
commit 9f91398875

View File

@@ -70,9 +70,9 @@ const _handlers: {
// This picks the correct message type out // This picks the correct message type out
// How great the type system of TypeScript is! // How great the type system of TypeScript is!
context: MessageContext context: MessageContext
) => SendMessageElement | undefined | Promise<SendMessageElement | undefined> ) => Promise<SendMessageElement | undefined>
} = { } = {
[OB11MessageDataType.text]: ({ data: { text } }) => SendMsgElementConstructor.text(text), [OB11MessageDataType.text]: async ({ data: { text } }) => SendMsgElementConstructor.text(text),
[OB11MessageDataType.at]: async ({ data: { qq: atQQ } }, context) => { [OB11MessageDataType.at]: async ({ data: { qq: atQQ } }, context) => {
if (!context.group) return undefined; if (!context.group) return undefined;
@@ -94,9 +94,9 @@ const _handlers: {
undefined; undefined;
}, },
[OB11MessageDataType.face]: ({ data: { id } }) => SendMsgElementConstructor.face(parseInt(id)), [OB11MessageDataType.face]: async ({ data: { id } }) => SendMsgElementConstructor.face(parseInt(id)),
[OB11MessageDataType.mface]: ({ [OB11MessageDataType.mface]: async ({
data: { data: {
emoji_package_id, emoji_package_id,
emoji_id, emoji_id,
@@ -146,13 +146,13 @@ const _handlers: {
[OB11MessageDataType.voice]: async (sendMsg, context) => [OB11MessageDataType.voice]: async (sendMsg, context) =>
SendMsgElementConstructor.ptt((await handleOb11FileLikeMessage(sendMsg, context)).path), 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 }) => { [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 () => { [OB11MessageDataType.Location]: async () => {
return SendMsgElementConstructor.location(); return SendMsgElementConstructor.location();
@@ -221,7 +221,7 @@ const handlers = <{
[Key in OB11MessageDataType]: ( [Key in OB11MessageDataType]: (
sendMsg: OB11MessageData, sendMsg: OB11MessageData,
context: MessageContext context: MessageContext
) => SendMessageElement | undefined | Promise<SendMessageElement | undefined> ) => Promise<SendMessageElement | undefined>
}>_handlers; }>_handlers;
export default async function createSendElements( export default async function createSendElements(
@@ -229,18 +229,20 @@ export default async function createSendElements(
group?: Group, group?: Group,
ignoreTypes: OB11MessageDataType[] = [] ignoreTypes: OB11MessageDataType[] = []
) { ) {
const sendElements: SendMessageElement[] = [];
const deleteAfterSentFiles: string[] = []; const deleteAfterSentFiles: string[] = [];
let callResultList: Array<Promise<SendMessageElement | undefined>> = [];
for (const sendMsg of messageData) { for (const sendMsg of messageData) {
if (ignoreTypes.includes(sendMsg.type)) { if (ignoreTypes.includes(sendMsg.type)) {
continue; continue;
} }
const callResult = await handlers[sendMsg.type]( const callResult = handlers[sendMsg.type](
sendMsg, sendMsg,
{ group, deleteAfterSentFiles } { group, deleteAfterSentFiles }
); )?.catch(undefined);
if (callResult) sendElements.push(callResult); callResultList.push(callResult);
} }
let ret = await Promise.all(callResultList);
const sendElements: SendMessageElement[] = ret.filter(ele => ele) as SendMessageElement[];
return { sendElements, deleteAfterSentFiles }; return { sendElements, deleteAfterSentFiles };
} }