feat: some go-cqhttp feature

This commit is contained in:
linyuchen 2024-02-21 17:17:15 +08:00
parent ebea755731
commit 7664e746b4
9 changed files with 31 additions and 17 deletions

View File

@ -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协议插件
</details>
<br/>
<details>
<summary>不支持cq码</summary>
<br/>
cq码已经过时了没有支持的打算(主要是我不用这玩意儿,加上我懒)
</details>
<br/>
<details>
<summary>QQ变得很卡</summary>
<br/>

View File

@ -4,7 +4,7 @@
"name": "LLOneBot",
"slug": "LLOneBot",
"description": "LiteLoaderQQNT的OneBotApi",
"version": "3.4.0",
"version": "3.5.0",
"thumbnail": "./icon.png",
"authors": [
{

View File

@ -87,4 +87,4 @@ export function getUidByUin(uin: string) {
}
}
export const version = "v3.4.0"
export const version = "v3.5.0"

View File

@ -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);

View File

@ -150,7 +150,10 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
let nodeId = messageNode.data.id;
// 有nodeId表示一个子转发消息卡片
if (nodeId) {
nodeIds.push(nodeId)
let nodeMsg = getHistoryMsgByShortId(nodeId);
if (nodeMsg){
nodeIds.push(nodeMsg.msgId);
}
} else {
// 自定义的消息
// 提取消息段发给自己生成消息id

View File

@ -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;
}

View File

@ -4,7 +4,8 @@ export enum EventType {
META = "meta_event",
REQUEST = "request",
NOTICE = "notice",
MESSAGE = "message"
MESSAGE = "message",
MESSAGE_SENT = "message_sent",
}

View File

@ -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)
}

View File

@ -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
}