import { type AllHandlers, NCWebsocket, Structs, type Send } from "node-napcat-ts"; export type MessageContext = AllHandlers['message'] | AllHandlers['message.private'] | AllHandlers['message.group'] | AllHandlers['notice'] | AllHandlers['request']; export interface Plugin { name: string; version: string; description?: string; cron?: [string, (e: NapcatClient) => void][]; initialize(client: NapcatClient): void; cleanup(): void; } export interface GenericPlugin extends Omit { cron?: [string, (e: T) => void][]; } export interface NapcatConnector extends NCWebsocket { onMessage(handler: (e: MessageContext) => void): void; removeMessageListener(handler: (e: MessageContext) => void): boolean; connect(): Promise; disconnect(): void; setConfig(config: Config): void; getConfig(): Config; } export interface NapcatClient { logger: Logger; onMessage(handler: (e: MessageContext) => void): void; removeMessageListener(handler: (e: MessageContext) => void): boolean; events: { reply(context: MessageContext, content: any, quote?: boolean): Promise<{ message_id: number; }>; sendPrivateMessage(userId: number, content: any): Promise<{ message_id: number; }>; sendGroupMessage(groupId: number, content: any): Promise<{ message_id: number; }>; isMaster: (id: number) => Promise; isAdmin: (id: number) => Promise; hasRight: (user_id: number) => Promise; delete_msg: (message_id: number) => Promise; kick: (group_id: number, user_id: number, reject_add_request?: boolean) => Promise; ban: (group_id: number, user_id: number, duration?: number) => Promise; banAll: (group_id: number, enable: boolean) => Promise; setGroupName: (group_id: number, name: string) => Promise; setAdmin: (group_id: number, user_id: number, enable: boolean) => Promise; setTitle: (group_id: number, user_id: number, title: string) => Promise; aprroveGroup: (flag: string) => Promise; rejectGroup: (flag: string) => Promise; isGroupAdmin: (group_id: number, user_id: number) => Promise; isGroupOwner: (group_id: number, user_id: number) => Promise; md5: (text: string) => string; randomInt: (min: number, max: number) => number; randomItem: (array: T[]) => T; getGroupAvatarLink: (group_id: number, size?: number) => string; getQQAvatarLink: (user_id: number, size?: number) => string; getImageLink: (raw_message: string) => string; getDirectLink: (url: string) => Promise; getMessageId: (raw_message: string) => string; getMessageAt: (raw_message: string) => number[]; getText: (raw_message: string) => string; getQuotedText: (raw_message: string) => Promise; fakeMessage: (target_id: number, message: Send['node'][], isGroup: boolean) => Promise<{ message_id: number; res_id: string; }>; }; sendPrivateMessage(userId: number, content: any): Promise<{ message_id: number; }>; sendGroupMessage(groupId: number, content: any): Promise<{ message_id: number; }>; deleteMessage: (message_id: number) => Promise; kickMember: (group_id: number, user_id: number, reject_add_request?: boolean) => Promise; banMember: (group_id: number, user_id: number, duration?: number) => Promise; banAllMembers: (group_id: number, enable: boolean) => Promise; setGroupNameEx: (group_id: number, name: string) => Promise; setAdminEx: (group_id: number, user_id: number, enable: boolean) => Promise; setMemberTitle: (group_id: number, user_id: number, title: string) => Promise; isMaster: (id: number) => Promise; isAdmin: (id: number) => Promise; hasRight: (user_id: number) => Promise; aprroveGroup: (flag: string) => Promise; rejectGroup: (flag: string) => Promise; isGroupAdmin: (group_id: number, user_id: number) => Promise; isGroupOwner: (group_id: number, user_id: number) => Promise; md5: (text: string) => string; randomInt: (min: number, max: number) => number; randomItem: (array: T[]) => T; getGroupAvatarLink: (group_id: number, size?: number) => string; getQQAvatarLink: (user_id: number, size?: number) => string; getImageLink: (raw_message: string) => string; getDirectLink: (url: string) => Promise; getMessageId: (raw_message: string) => string; getMessageAt: (raw_message: string) => number[]; getText: (raw_message: string) => string; getQuotedText: (raw_message: string) => Promise; fakeMessage: (target_id: number, message: Send['node'][], isGroup: boolean) => Promise<{ message_id: number; res_id: string; }>; setConfig(config: Config): void; getConfig(): Config; pluginManager: any; bot_uin: number; napcat: NapcatConnector; } export interface Logger { info(message: string): void; error(message: string): void; warn(message: string): void; debug(message: string): void; } export type FsSizeData = { fs: string; type: string; size: number; used: number; available: number; mount: string; [key: string]: any; }; export interface Config { bot: number; master: number; admins: number[]; baseUrl: string; accessToken: string; throwPromise: boolean; reconnection: { enable: boolean; attempts: number; delay: number; }; debug: boolean; plugins: { system: string[]; user: string[]; }; logger: { level: string; maxSize: string; maxDays: number; }; } export { type AllHandlers, NCWebsocket, Structs, type Send };