diff --git a/manifest.json b/manifest.json index dc5ef193..c0864b5e 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "2.2.4", + "version": "2.2.5", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 83b6de3e..bb5826e6 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "2.2.4", + "version": "2.2.5", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/framework/napcat.ts b/src/common/framework/napcat.ts index b21a3be6..ab97e1c0 100644 --- a/src/common/framework/napcat.ts +++ b/src/common/framework/napcat.ts @@ -2,7 +2,7 @@ import path, { dirname } from 'path'; import { fileURLToPath } from 'url'; import fs from 'fs'; -export const napcat_version = '2.2.4'; +export const napcat_version = '2.2.5'; export class NapCatPathWrapper { binaryPath: string; diff --git a/src/onebot/action/msg/SendMsg/create-send-elements.ts b/src/onebot/action/msg/SendMsg/create-send-elements.ts index f93c6cd7..720c85c7 100644 --- a/src/onebot/action/msg/SendMsg/create-send-elements.ts +++ b/src/onebot/action/msg/SendMsg/create-send-elements.ts @@ -171,7 +171,7 @@ const _handlers: { } else { postData = data; } - // Mlikiowa V2.2.4 Refactor Todo + // Mlikiowa V2.2.5 Refactor Todo const signUrl = obContext.configLoader.configData.musicSignUrl; if (!signUrl) { if (data.type === 'qq') { diff --git a/src/onebot/action/msg/SendMsg/index.ts b/src/onebot/action/msg/SendMsg/index.ts index eba0ef0e..d854941c 100644 --- a/src/onebot/action/msg/SendMsg/index.ts +++ b/src/onebot/action/msg/SendMsg/index.ts @@ -90,6 +90,7 @@ async function createContext(coreContext: NapCatCore, payload: OB11PostSendMsg, // This redundant design of Ob11 here should be blamed. const NTQQFriendApi = coreContext.apis.FriendApi; const NTQQUserApi = coreContext.apis.UserApi; + const NTQQMsgApi = coreContext.apis.MsgApi; if ((contextMode === ContextMode.Group || contextMode === ContextMode.Normal) && payload.group_id) { return { chatType: ChatType.KCHATTYPEGROUP, @@ -98,12 +99,38 @@ async function createContext(coreContext: NapCatCore, payload: OB11PostSendMsg, } if ((contextMode === ContextMode.Private || contextMode === ContextMode.Normal) && payload.user_id) { const Uid = await NTQQUserApi.getUidByUinV2(payload.user_id.toString()); - const isBuddy = await NTQQFriendApi.isBuddy(Uid!); - //console.log("[调试代码] UIN:", payload.user_id, " UID:", Uid, " IsBuddy:", isBuddy); + if (!Uid) throw '无法获取用户信息'; + const isBuddy = await NTQQFriendApi.isBuddy(Uid); + if (!isBuddy) { + //筛选被动C2CGroup临时会话 + const ret = await NTQQMsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, Uid); + if (ret.tmpChatInfo?.groupCode) { + return { + chatType: ChatType.KCHATTYPETEMPC2CFROMGROUP, + peerUid: Uid, + guildId: '', + }; + } + //带有group_id的C2CGroup主动临时会话 + if (payload.group_id) { + return { + chatType: ChatType.KCHATTYPETEMPC2CFROMGROUP, + peerUid: Uid, + guildId: payload.group_id.toString(), + }; + } + //非好友的C2C 用于识别单向会话 + return { + chatType: ChatType.KCHATTYPEC2C, + peerUid: Uid!, + guildId: payload.group_id?.toString() || '', + }; + } + //好友的C2C return { - chatType: isBuddy ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, + chatType: ChatType.KCHATTYPEC2C, peerUid: Uid!, - guildId: payload.group_id?.toString() || '', + guildId: '', }; } throw '请指定 group_id 或 user_id'; @@ -135,7 +162,7 @@ export class SendMsg extends BaseAction { if (payload.user_id && payload.message_type !== 'group') { const uid = await NTQQUserApi.getUidByUinV2(payload.user_id.toString()); const isBuddy = await NTQQFriendApi.isBuddy(uid!); - if (!isBuddy) {} + if (!isBuddy) { } } return { valid: true }; } diff --git a/src/webui/ui/NapCat.ts b/src/webui/ui/NapCat.ts index 194c193d..036c47f0 100644 --- a/src/webui/ui/NapCat.ts +++ b/src/webui/ui/NapCat.ts @@ -30,7 +30,7 @@ async function onSettingWindowCreated(view: Element) { SettingItem( 'Napcat', undefined, - SettingButton('V2.2.4', 'napcat-update-button', 'secondary'), + SettingButton('V2.2.5', 'napcat-update-button', 'secondary'), ), ]), SettingList([ diff --git a/static/assets/renderer.js b/static/assets/renderer.js index a8c63c74..19be921d 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V2.2.4", "napcat-update-button", "secondary") + SettingButton("V2.2.5", "napcat-update-button", "secondary") ) ]), SettingList([