NapCatQQ/packages/napcat-satori/action/guild/GuildMemberMute.ts
手瓜一十雪 b0d88d3705 Refactor Satori actions with schema validation and router
Refactored all Satori action classes to use TypeBox schemas for payload validation and unified action naming via a new router. Added schema-based parameter checking to the SatoriAction base class. Introduced new actions for guild and member approval, and login retrieval. Centralized action name constants and types in a new router module. Enhanced event and message APIs with more structured event types and parsing logic. Added helper utilities for XML parsing. Updated exports and registration logic to support the new structure.
2026-01-14 17:52:38 +08:00

29 lines
937 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Static, Type } from '@sinclair/typebox';
import { SatoriAction } from '../SatoriAction';
import { SatoriActionName } from '../router';
const SchemaData = Type.Object({
guild_id: Type.String(),
user_id: Type.String(),
duration: Type.Optional(Type.Number({ default: 0 })), // 禁言时长毫秒0 表示解除禁言
});
type Payload = Static<typeof SchemaData>;
export class GuildMemberMuteAction extends SatoriAction<Payload, void> {
actionName = SatoriActionName.GuildMemberMute;
override payloadSchema = SchemaData;
protected async _handle (payload: Payload): Promise<void> {
const { guild_id, user_id, duration } = payload;
// 将毫秒转换为秒
const durationSeconds = duration ? Math.floor(duration / 1000) : 0;
await this.core.apis.GroupApi.banMember(
guild_id,
[{ uid: await this.core.apis.UserApi.getUidByUinV2(user_id), timeStamp: durationSeconds }]
);
}
}