fix: cq code auto escape

fix: get groups no cache
This commit is contained in:
linyuchen
2024-04-16 20:28:05 +08:00
parent 9b8d7e969a
commit 6221823f12
53 changed files with 120 additions and 69 deletions

View File

@@ -16,8 +16,8 @@ class GetGroupList extends BaseAction<Payload, OB11Group[]> {
protected async _handle(payload: Payload) {
let groupList: Group[] = Array.from(groups.values());
if (groupList.length === 0) {
groupList = await NTQQGroupApi.getGroups(payload.no_cache === true);
if (groupList.length === 0 || payload.no_cache === true) {
groupList = await NTQQGroupApi.getGroups(true);
// log('get groups', groups);
}
return OB11Constructor.groups(groupList);

View File

@@ -96,6 +96,8 @@ function initActionMap() {
const actionMap = new Map<string, BaseAction<any, any>>();
for (const action of actionHandlers) {
actionMap.set(action.actionName, action);
actionMap.set(action.actionName + '_async', action);
actionMap.set(action.actionName + '_rate_limited', action);
}
return actionMap;

View File

@@ -73,15 +73,15 @@ export interface ReturnDataType {
export function convertMessage2List(message: OB11MessageMixType, autoEscape = false) {
if (typeof message === 'string') {
if (!autoEscape) {
message = decodeCQCode(message.toString());
} else {
if (autoEscape === true) {
message = [{
type: OB11MessageDataType.text,
data: {
text: message
}
}];
} else {
message = decodeCQCode(message.toString());
}
} else if (!Array.isArray(message)) {
message = [message];
@@ -210,6 +210,14 @@ export async function createSendElements(messageData: OB11MessageData[], group:
sendElements.push(SendMsgElementConstructor.ark(sendMsg.data.data));
}
break;
case OB11MessageDataType.dice:{
const resultId = sendMsg.data?.result;
sendElements.push(SendMsgElementConstructor.dice(resultId));
}break;
case OB11MessageDataType.RPS:{
const resultId = sendMsg.data?.result;
sendElements.push(SendMsgElementConstructor.rps(resultId));
}break;
}
}
@@ -321,7 +329,7 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
} else {
throw ('发送消息参数错误, 请指定group_id或user_id');
}
const messages = convertMessage2List(payload.message);
const messages = convertMessage2List(payload.message, payload.auto_escape);
if (this.getSpecialMsgNum(payload, OB11MessageDataType.node)) {
try {
const returnMsg = await this.handleForwardNode(peer, messages as OB11MessageNode[], group);

View File

@@ -11,7 +11,7 @@ import {
import {
AtType,
ChatType,
ElementType,
ElementType, FaceIndex,
Friend,
GrayTipElementSubType,
Group,
@@ -224,18 +224,23 @@ export class OB11Constructor {
elementId: element.elementId
}).then();
// log("收到语音消息", msg)
// window.LLAPI.Ptt2Text(message.raw.msgId, message.peer, messages).then(text => {
// console.log("语音转文字结果", text);
// }).catch(err => {
// console.log("语音转文字失败", err);
// })
} else if (element.arkElement) {
message_data['type'] = OB11MessageDataType.json;
message_data['data']['data'] = element.arkElement.bytesData;
} else if (element.faceElement) {
message_data['type'] = OB11MessageDataType.face;
message_data['data']['id'] = element.faceElement.faceIndex.toString();
const faceId = element.faceElement.faceIndex;
if (faceId === FaceIndex.dice){
message_data['type'] = OB11MessageDataType.dice;
message_data['data']['result'] = element.faceElement.resultId;
}
else if (faceId === FaceIndex.RPS){
message_data['type'] = OB11MessageDataType.RPS;
message_data['data']['result'] = element.faceElement.resultId;
}
else{
message_data['type'] = OB11MessageDataType.face;
message_data['data']['id'] = element.faceElement.faceIndex.toString();
}
} else if (element.marketFaceElement) {
message_data['type'] = OB11MessageDataType.mface;
message_data['data']['text'] = element.marketFaceElement.faceName;

View File

@@ -1,7 +1,7 @@
import { Response } from 'express';
import { OB11Response } from '../action/OB11Response';
import { HttpServerBase } from '@/common/server/http';
import { actionHandlers } from '../action';
import { actionHandlers, actionMap } from '../action';
import { ob11Config } from '@/onebot11/config';
class OB11HTTPServer extends HttpServerBase {
@@ -21,10 +21,9 @@ class OB11HTTPServer extends HttpServerBase {
export const ob11HTTPServer = new OB11HTTPServer();
setTimeout(() => {
for (const action of actionHandlers) {
for (const [actionName, action] of actionMap) {
for (const method of ['post', 'get']) {
ob11HTTPServer.registerRouter(method, action.actionName, (res, payload) => {
// @ts-expect-error wait fix
ob11HTTPServer.registerRouter(method, actionName, (res, payload) => {
return action.handle(payload);
});
}

View File

@@ -1,4 +1,4 @@
import { PicSubType, RawMessage } from '@/core/entity';
import { PicSubType, RawMessage } from '@/core/qqnt/entities';
import { EventType } from './event/OB11BaseEvent';
export interface OB11User {
@@ -116,7 +116,10 @@ export enum OB11MessageDataType {
markdown = 'markdown',
node = 'node', // 合并转发消息节点
forward = 'forward', // 合并转发消息,用于上报
xml = 'xml'
xml = 'xml',
poke = 'poke',
dice = 'dice',
RPS = 'rps'
}
export interface OB11MessageMFace {
@@ -213,12 +216,26 @@ export interface OB11MessageJson {
data: { config: { token: string } } & any
}
export interface OB11MessageDice{
type: OB11MessageDataType.dice,
data: {
result: number
}
}
export interface OB11MessageRPS{
type: OB11MessageDataType.RPS,
data: {
result: number
}
}
export type OB11MessageData =
OB11MessageText |
OB11MessageFace | OB11MessageMFace |
OB11MessageAt | OB11MessageReply |
OB11MessageImage | OB11MessageRecord | OB11MessageFile | OB11MessageVideo |
OB11MessageNode | OB11MessageCustomMusic | OB11MessageJson
OB11MessageNode | OB11MessageCustomMusic | OB11MessageJson |
OB11MessageDice | OB11MessageRPS
export interface OB11PostSendMsg {
message_type?: 'private' | 'group'
@@ -226,6 +243,7 @@ export interface OB11PostSendMsg {
group_id?: string,
message: OB11MessageMixType;
messages?: OB11MessageMixType; // 兼容 go-cqhttp
auto_escape?: boolean
}
export interface OB11Version {