mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 15:11:15 +00:00
Replaced generic ActionExamples imports with more specific examples modules (FileActionsExamples, GroupActionsExamples, GoCQHTTPActionsExamples) across file, group, and go-cqhttp actions. Added or updated actionSummary, actionDescription, actionTags, payloadExample, and returnExample properties for improved API documentation and clarity.
78 lines
4.0 KiB
TypeScript
78 lines
4.0 KiB
TypeScript
import { OneBotAction } from '@/napcat-onebot/action/OneBotAction';
|
|
import { ActionName } from '@/napcat-onebot/action/router';
|
|
import { QuickAction, QuickActionEvent } from '@/napcat-onebot/types';
|
|
import { Static, Type } from '@sinclair/typebox';
|
|
import { GoCQHTTPActionsExamples } from './examples';
|
|
|
|
const SenderSchema = Type.Object({
|
|
user_id: Type.String({ description: '用户ID' }),
|
|
nickname: Type.String({ description: '昵称' }),
|
|
sex: Type.Optional(Type.String({ description: '性别' })),
|
|
age: Type.Optional(Type.Number({ description: '年龄' })),
|
|
card: Type.Optional(Type.String({ description: '群名片' })),
|
|
level: Type.Optional(Type.String({ description: '群等级' })),
|
|
role: Type.Optional(Type.String({ description: '群角色' })),
|
|
});
|
|
|
|
// 定义 QuickAction 的详细 Schema
|
|
const QuickActionSchema = Type.Object({
|
|
reply: Type.Optional(Type.String({ description: '回复内容' })),
|
|
auto_escape: Type.Optional(Type.Boolean({ description: '是否作为纯文本发送' })),
|
|
at_sender: Type.Optional(Type.Boolean({ description: '是否 @ 发送者' })),
|
|
delete: Type.Optional(Type.Boolean({ description: '是否撤回该消息' })),
|
|
kick: Type.Optional(Type.Boolean({ description: '是否踢出发送者' })),
|
|
ban: Type.Optional(Type.Boolean({ description: '是否禁言发送者' })),
|
|
ban_duration: Type.Optional(Type.Number({ description: '禁言时长' })),
|
|
approve: Type.Optional(Type.Boolean({ description: '是否同意请求/加群' })),
|
|
remark: Type.Optional(Type.String({ description: '好友备注' })),
|
|
reason: Type.Optional(Type.String({ description: '拒绝理由' })),
|
|
}, { description: '快速操作内容' });
|
|
|
|
// 定义 QuickActionEvent 的详细 Schema
|
|
const QuickActionEventSchema = Type.Object({
|
|
time: Type.Number({ description: '事件发生时间' }),
|
|
self_id: Type.Number({ description: '收到事件的机器人 QQ 号' }),
|
|
post_type: Type.String({ description: '上报类型' }),
|
|
message_type: Type.Optional(Type.String({ description: '消息类型' })),
|
|
sub_type: Type.Optional(Type.String({ description: '消息子类型' })),
|
|
user_id: Type.String({ description: '发送者 QQ 号' }),
|
|
group_id: Type.Optional(Type.String({ description: '群号' })),
|
|
message_id: Type.Optional(Type.Number({ description: '消息 ID' })),
|
|
message_seq: Type.Optional(Type.Number({ description: '消息序列号' })),
|
|
real_id: Type.Optional(Type.Number({ description: '真实消息 ID' })),
|
|
sender: Type.Optional(SenderSchema),
|
|
message: Type.Optional(Type.Any({ description: '消息内容' })),
|
|
message_format: Type.Optional(Type.String({ description: '消息格式' })),
|
|
raw_message: Type.Optional(Type.String({ description: '原始消息内容' })),
|
|
font: Type.Optional(Type.Number({ description: '字体' })),
|
|
notice_type: Type.Optional(Type.String({ description: '通知类型' })),
|
|
meta_event_type: Type.Optional(Type.String({ description: '元事件类型' })),
|
|
}, { description: '事件上下文' });
|
|
|
|
export const GoCQHTTPHandleQuickActionPayloadSchema = Type.Object({
|
|
context: QuickActionEventSchema,
|
|
operation: QuickActionSchema,
|
|
});
|
|
|
|
export type GoCQHTTPHandleQuickActionPayload = {
|
|
context: QuickActionEvent;
|
|
operation: QuickAction;
|
|
} & Static<typeof GoCQHTTPHandleQuickActionPayloadSchema>;
|
|
|
|
export class GoCQHTTPHandleQuickAction extends OneBotAction<GoCQHTTPHandleQuickActionPayload, void> {
|
|
override actionName = ActionName.GoCQHTTP_HandleQuickAction;
|
|
override payloadSchema = GoCQHTTPHandleQuickActionPayloadSchema;
|
|
override returnSchema = Type.Null();
|
|
override actionSummary = '处理快速操作';
|
|
override actionDescription = '处理来自事件上报的快速操作请求';
|
|
override actionTags = ['Go-CQHTTP'];
|
|
override payloadExample = GoCQHTTPActionsExamples.QuickAction.payload;
|
|
override returnExample = GoCQHTTPActionsExamples.QuickAction.response;
|
|
|
|
async _handle (payload: GoCQHTTPHandleQuickActionPayload): Promise<void> {
|
|
this.obContext.apis.QuickActionApi
|
|
.handleQuickOperation(payload.context, payload.operation)
|
|
.catch(e => this.core.context.logger.logError(e));
|
|
}
|
|
}
|