From 7664e746b4fd3ff2105058b2a0aa27fd7ab0620d Mon Sep 17 00:00:00 2001 From: linyuchen Date: Wed, 21 Feb 2024 17:17:15 +0800 Subject: [PATCH] feat: some go-cqhttp feature --- README.md | 12 +++++------- manifest.json | 2 +- src/common/data.ts | 2 +- src/main/main.ts | 4 +++- src/onebot11/action/SendMsg.ts | 5 ++++- src/onebot11/constructor.ts | 15 ++++++++++++--- src/onebot11/event/OB11BaseEvent.ts | 3 ++- src/onebot11/server/ws/reply.ts | 2 +- src/onebot11/types.ts | 3 ++- 9 files changed, 31 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 6e1bb6e..0ae7473 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ LiteLoaderQQNT的OneBot11协议插件 - [x] 上报好友、群消息撤回 消息格式支持: +- [x] cq码 - [x] 文字 - [x] 表情 - [x] 图片 @@ -64,6 +65,10 @@ LiteLoaderQQNT的OneBot11协议插件 - [x] can_send_image - [x] can_send_record +支持的go-cqhtp api: +- [x] send_private_forward_msg +- [x] send_group_forward_msg + ## 示例 ![](doc/image/example.jpg) @@ -91,13 +96,6 @@ LiteLoaderQQNT的OneBot11协议插件
-
- 不支持cq码 -
- cq码已经过时了,没有支持的打算(主要是我不用这玩意儿,加上我懒) -
-
-
QQ变得很卡
diff --git a/manifest.json b/manifest.json index 4ffec7f..0933aa2 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "LiteLoaderQQNT的OneBotApi", - "version": "3.4.0", + "version": "3.5.0", "thumbnail": "./icon.png", "authors": [ { diff --git a/src/common/data.ts b/src/common/data.ts index 09ff741..6bb5dda 100644 --- a/src/common/data.ts +++ b/src/common/data.ts @@ -87,4 +87,4 @@ export function getUidByUin(uin: string) { } } -export const version = "v3.4.0" +export const version = "v3.5.0" diff --git a/src/main/main.ts b/src/main/main.ts index be20be2..b0f9b78 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -16,6 +16,7 @@ import {OB11FriendRecallNoticeEvent} from "../onebot11/event/notice/OB11FriendRe import {OB11GroupRecallNoticeEvent} from "../onebot11/event/notice/OB11GroupRecallNoticeEvent"; import {postEvent} from "../onebot11/server/postevent"; import {ob11ReverseWebsockets} from "../onebot11/server/ws/ReverseWebsocket"; +import {EventType} from "../onebot11/event/OB11BaseEvent"; let running = false; @@ -94,7 +95,8 @@ function onLoad() { if (debug) { msg.raw = message; } - if (msg.user_id.toString() == selfInfo.uin && !reportSelfMessage) { + const isSelfMsg = msg.user_id.toString() == selfInfo.uin + if (isSelfMsg && !reportSelfMessage) { return } postEvent(msg); diff --git a/src/onebot11/action/SendMsg.ts b/src/onebot11/action/SendMsg.ts index 212878d..2150423 100644 --- a/src/onebot11/action/SendMsg.ts +++ b/src/onebot11/action/SendMsg.ts @@ -150,7 +150,10 @@ export class SendMsg extends BaseAction { let nodeId = messageNode.data.id; // 有nodeId表示一个子转发消息卡片 if (nodeId) { - nodeIds.push(nodeId) + let nodeMsg = getHistoryMsgByShortId(nodeId); + if (nodeMsg){ + nodeIds.push(nodeMsg.msgId); + } } else { // 自定义的消息 // 提取消息段,发给自己生成消息id diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 9628427..d24e190 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -11,6 +11,7 @@ import {AtType, ChatType, Group, GroupMember, IMAGE_HTTP_HOST, RawMessage, SelfI import {getFriend, getGroupMember, getHistoryMsgBySeq, selfInfo} from '../common/data'; import {file2base64, getConfigUtil, log} from "../common/utils"; import {NTQQApi} from "../ntqqapi/ntcall"; +import {EventType} from "./event/OB11BaseEvent"; export class OB11Constructor { @@ -34,10 +35,10 @@ export class OB11Constructor { font: 14, sub_type: "friend", message: [], - post_type: "message", + post_type: selfInfo.uin == msg.senderUin ? EventType.MESSAGE_SENT : EventType.MESSAGE, } if (msg.chatType == ChatType.group) { - resMsg.sub_type = "normal" + resMsg.sub_type = "normal" // 这里go-cqhttp是group,而onebot11标准是normal, 蛋疼 resMsg.group_id = parseInt(msg.peerUin) const member = await getGroupMember(msg.peerUin, msg.senderUin); if (member) { @@ -80,7 +81,14 @@ export class OB11Constructor { } } else if (element.textElement) { message_data["type"] = "text" - resMsg.raw_message += message_data["data"]["text"] = element.textElement.content + let text= element.textElement.content + if (!text.trim()){ + continue; + } + message_data["data"]["text"] = text + if (text){ + resMsg.raw_message += text + } } else if (element.picElement) { message_data["type"] = "image" message_data["data"]["file_id"] = element.picElement.fileUuid @@ -139,6 +147,7 @@ export class OB11Constructor { resMsg.message.push(message_data); } } + resMsg.raw_message = resMsg.raw_message.trim(); return resMsg; } diff --git a/src/onebot11/event/OB11BaseEvent.ts b/src/onebot11/event/OB11BaseEvent.ts index 1983db6..a495d1d 100644 --- a/src/onebot11/event/OB11BaseEvent.ts +++ b/src/onebot11/event/OB11BaseEvent.ts @@ -4,7 +4,8 @@ export enum EventType { META = "meta_event", REQUEST = "request", NOTICE = "notice", - MESSAGE = "message" + MESSAGE = "message", + MESSAGE_SENT = "message_sent", } diff --git a/src/onebot11/server/ws/reply.ts b/src/onebot11/server/ws/reply.ts index 9c21fce..f4acaca 100644 --- a/src/onebot11/server/ws/reply.ts +++ b/src/onebot11/server/ws/reply.ts @@ -11,7 +11,7 @@ export function wsReply(wsClient: websocket.WebSocket, data: OB11Response | Post delete packet["echo"]; } wsClient.send(JSON.stringify(packet)) - log("ws 消息上报", wsClient.url, data) + log("ws 消息上报", wsClient.url || "", data) } catch (e) { log("websocket 回复失败", e) } diff --git a/src/onebot11/types.ts b/src/onebot11/types.ts index 1627c84..ab23fbd 100644 --- a/src/onebot11/types.ts +++ b/src/onebot11/types.ts @@ -1,4 +1,5 @@ import {AtType, RawMessage} from "../ntqqapi/types"; +import {EventType} from "./event/OB11BaseEvent"; export interface OB11User { user_id: number; @@ -67,7 +68,7 @@ export interface OB11Message { message: OB11MessageData[], raw_message: string, font: number, - post_type?: "message", + post_type?: EventType, raw?: RawMessage }