From 31ad0195d8b02755306cc0e126cec8a47069fb72 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 19:47:52 +0800 Subject: [PATCH 1/5] fix(onebot): `get_group_msg_history` API --- src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts index 90ca97a..d8328a4 100644 --- a/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts @@ -30,12 +30,12 @@ export class GetGroupMsgHistory extends BaseAction { const { count, reverseOrder } = payload const peer = { chatType: ChatType.Group, peerUid: payload.group_id.toString() } let msgList: RawMessage[] - if (!payload.message_seq || payload.message_seq === '0') { + if (!payload.message_seq || +payload.message_seq === 0) { msgList = (await this.ctx.ntMsgApi.getAioFirstViewLatestMsgs(peer, +count)).msgList } else { const startMsgId = (await this.ctx.store.getMsgInfoByShortId(+payload.message_seq))?.msgId if (!startMsgId) throw new Error(`消息${payload.message_seq}不存在`) - msgList = (await this.ctx.ntMsgApi.getMsgHistory(peer, startMsgId, +count)).msgList + msgList = (await this.ctx.ntMsgApi.getMsgHistory(peer, startMsgId, +count, true)).msgList } if (!msgList?.length) throw new Error('未找到消息') if (reverseOrder) msgList.reverse() From d43612b2a37e23aea8d7e3e54d1845c44061e850 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 20:21:57 +0800 Subject: [PATCH 2/5] feat(satori): support for receiving `llonebot:ark` element --- src/satori/utils.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/satori/utils.ts b/src/satori/utils.ts index 9be4d34..45b8fe4 100644 --- a/src/satori/utils.ts +++ b/src/satori/utils.ts @@ -129,6 +129,11 @@ async function decodeElement(ctx: Context, data: NT.RawMessage, quoted = false) type: String(faceType), platform: 'llonebot' })) + } else if (v.arkElement) { + // llonebot:ark + buffer.push(h('llonebot:ark', { + data: v.arkElement.bytesData + })) } } return buffer From dbd71d4376260c75e1d457f32c2abc16e16d60f1 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:42:01 +0800 Subject: [PATCH 3/5] chore --- src/ntqqapi/api/friend.ts | 2 +- src/ntqqapi/api/msg.ts | 7 ++++--- src/ntqqapi/api/user.ts | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ntqqapi/api/friend.ts b/src/ntqqapi/api/friend.ts index ed17a09..f1ad644 100644 --- a/src/ntqqapi/api/friend.ts +++ b/src/ntqqapi/api/friend.ts @@ -58,7 +58,7 @@ export class NTQQFriendApi extends Service { return Object.values(data.userSimpleInfos).filter(v => uids.includes(v.uid!)) } - /** uid => uin */ + /** uid -> uin */ async getBuddyIdMap(refresh = false): Promise> { const retMap: Map = new Map() const data = await invoke<{ diff --git a/src/ntqqapi/api/msg.ts b/src/ntqqapi/api/msg.ts index eb032a5..5f67c9c 100644 --- a/src/ntqqapi/api/msg.ts +++ b/src/ntqqapi/api/msg.ts @@ -52,7 +52,7 @@ export class NTQQMsgApi extends Service { } async getMsgHistory(peer: Peer, msgId: string, cnt: number, queryOrder = false) { - // 默认情况下消息时间从旧到新 + // 默认情况下消息时间从新到旧 return await invoke(NTMethod.HISTORY_MSG, [{ peer, msgId, cnt, queryOrder }]) } @@ -93,7 +93,7 @@ export class NTQQMsgApi extends Service { const uniqueId = await this.generateMsgUniqueId(destPeer.chatType) destPeer.guildId = uniqueId const data = await invoke<{ msgList: RawMessage[] }>( - 'nodeIKernelMsgService/forwardMsg', + 'nodeIKernelMsgService/forwardMsgWithComment', [{ msgIds, srcContact: srcPeer, @@ -111,7 +111,8 @@ export class NTQQMsgApi extends Service { } } return false - } + }, + timeout: 3000 } ) delete destPeer.guildId diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index 77aeea0..ab1abd1 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -178,7 +178,7 @@ export class NTQQUserApi extends Service { if (uin) return uin uin = (await invoke('nodeIKernelUixConvertService/getUin', [{ uids: [uid] }])).uinInfo.get(uid) if (uin) return uin - uin = (await this.ctx.ntFriendApi.getBuddyIdMap(true)).get(uid) + uin = (await this.ctx.ntFriendApi.getBuddyIdMap()).get(uid) if (uin) return uin uin = (await this.getUserDetailInfo(uid)).uin return uin From 4ced7fa3cfefb97c257f8f7c7a9d4edf7ec09d34 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:48:22 +0800 Subject: [PATCH 4/5] fix --- src/ntqqapi/native/index.ts | 14 ++++++++++---- src/onebot11/action/llonebot/FriendPoke.ts | 2 +- src/onebot11/action/llonebot/GroupPoke.ts | 2 +- src/onebot11/entities.ts | 13 ++++++++----- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/ntqqapi/native/index.ts b/src/ntqqapi/native/index.ts index 66cdacd..500c13f 100644 --- a/src/ntqqapi/native/index.ts +++ b/src/ntqqapi/native/index.ts @@ -1,6 +1,9 @@ import { Context } from 'cordis' import { Dict } from 'cosmokit' import { getBuildVersion } from '@/common/utils/misc' +import { TEMP_DIR } from '@/common/globalVars' +import { copyFile } from 'fs/promises' +import path from 'node:path' import addon from './external/crychic-win32-x64.node?asset' export class Native { @@ -18,11 +21,11 @@ export class Native { checkVersion() { const version = getBuildVersion() - // 27187—27597 - return version >= 27187 && version < 28060 + // 27333—27597 + return version >= 27333 && version < 28060 } - start() { + async start() { if (this.crychic) { return } @@ -33,7 +36,10 @@ export class Native { return } try { - this.crychic = require(addon) + const fileName = path.basename(addon) + const dest = path.join(TEMP_DIR, fileName) + await copyFile(addon, dest) + this.crychic = require(dest) this.crychic!.init() } catch (e) { this.ctx.logger.warn('crychic 加载失败', e) diff --git a/src/onebot11/action/llonebot/FriendPoke.ts b/src/onebot11/action/llonebot/FriendPoke.ts index 6223ddb..80a4ae5 100644 --- a/src/onebot11/action/llonebot/FriendPoke.ts +++ b/src/onebot11/action/llonebot/FriendPoke.ts @@ -17,7 +17,7 @@ export class FriendPoke extends BaseAction { throw new Error('当前系统平台或架构不支持') } if (!this.ctx.app.native.checkVersion()) { - throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27187—27597`) + throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) } await this.ctx.app.native.sendFriendPoke(+payload.user_id) return null diff --git a/src/onebot11/action/llonebot/GroupPoke.ts b/src/onebot11/action/llonebot/GroupPoke.ts index 5e2cdb0..89f8787 100644 --- a/src/onebot11/action/llonebot/GroupPoke.ts +++ b/src/onebot11/action/llonebot/GroupPoke.ts @@ -19,7 +19,7 @@ export class GroupPoke extends BaseAction { throw new Error('当前系统平台或架构不支持') } if (!this.ctx.app.native.checkVersion()) { - throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27187—27597`) + throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`) } await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id) return null diff --git a/src/onebot11/entities.ts b/src/onebot11/entities.ts index 09699ea..6b3d9f8 100644 --- a/src/onebot11/entities.ts +++ b/src/onebot11/entities.ts @@ -79,11 +79,14 @@ export namespace OB11Entities { if (msg.chatType === ChatType.Group) { resMsg.sub_type = 'normal' resMsg.group_id = parseInt(msg.peerUin) - const member = await ctx.ntGroupApi.getGroupMember(msg.peerUin, msg.senderUid) - if (member) { - resMsg.sender.role = groupMemberRole(member.role) - resMsg.sender.nickname = member.nick - resMsg.sender.title = member.memberSpecialTitle ?? '' + // 284840486: 合并转发内部 + if (msg.peerUin !== '284840486') { + const member = await ctx.ntGroupApi.getGroupMember(msg.peerUin, msg.senderUid) + if (member) { + resMsg.sender.role = groupMemberRole(member.role) + resMsg.sender.nickname = member.nick + resMsg.sender.title = member.memberSpecialTitle ?? '' + } } } else if (msg.chatType === ChatType.C2C) { From c837e970df90c47f678badf03d0a865aa4b07ff1 Mon Sep 17 00:00:00 2001 From: idranme <96647698+idranme@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:48:50 +0800 Subject: [PATCH 5/5] chore: bump versions --- manifest.json | 2 +- src/version.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 47b86e2..40d1838 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发", - "version": "4.0.8", + "version": "4.0.9", "icon": "./icon.webp", "authors": [ { diff --git a/src/version.ts b/src/version.ts index c27321b..70e4db1 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = '4.0.8' +export const version = '4.0.9'