mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-06 21:10:23 +00:00
fix: cq code auto escape
fix: get groups no cache
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user