mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 15:11:15 +00:00
Standardized type usage and improved type safety across multiple OneBot action files. Updated payload schemas to use string types for IDs and flags, refined return types, and enhanced message content typing. Added error handling for missing parameters in SetGroupTodo.
35 lines
1.7 KiB
TypeScript
35 lines
1.7 KiB
TypeScript
import { MessageUnique } from 'napcat-common/src/message-unique';
|
|
import { ChatType, Peer } from 'napcat-core';
|
|
import { GetPacketStatusDepends } from '@/napcat-onebot/action/packet/GetPacketStatus';
|
|
import { Static, Type } from '@sinclair/typebox';
|
|
import { ActionName } from '../router';
|
|
|
|
export const SetGroupTodoPayloadSchema = Type.Object({
|
|
group_id: Type.Union([Type.String(), Type.Number()], { description: '群号' }),
|
|
message_id: Type.Optional(Type.String({ description: '消息ID' })),
|
|
message_seq: Type.Optional(Type.String({ description: '消息Seq (可选)' })),
|
|
});
|
|
|
|
export type SetGroupTodoPayload = Static<typeof SetGroupTodoPayloadSchema>;
|
|
export class SetGroupTodo extends GetPacketStatusDepends<SetGroupTodoPayload, void> {
|
|
override payloadSchema = SetGroupTodoPayloadSchema;
|
|
override returnSchema = Type.Null();
|
|
override actionName = ActionName.SetGroupTodo;
|
|
async _handle (payload: SetGroupTodoPayload) {
|
|
if (payload.message_seq) {
|
|
return await this.core.apis.PacketApi.pkt.operation.SetGroupTodo(+payload.group_id, payload.message_seq.toString());
|
|
}
|
|
if (!payload.message_id) {
|
|
throw new Error('缺少参数 message_id 或 message_seq');
|
|
}
|
|
const peer: Peer = {
|
|
chatType: ChatType.KCHATTYPEGROUP,
|
|
peerUid: payload.group_id.toString(),
|
|
};
|
|
const { MsgId, Peer } = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id) ?? { Peer: peer, MsgId: payload.message_id.toString() };
|
|
const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(Peer, [MsgId])).msgList[0];
|
|
if (!msg) throw new Error('消息不存在');
|
|
await this.core.apis.PacketApi.pkt.operation.SetGroupTodo(+payload.group_id, msg.msgSeq);
|
|
}
|
|
}
|