UNPKG

xincbot

Version:

A flexible QQ bot framework based on NapCat and node-napcat-ts

269 lines 9.37 kB
import { EventKey, EventHandleMap } from './Interfaces'; import { NCWebsocket } from 'node-napcat-ts'; /** 群组信息接口 */ export interface GroupInfo { /** 群号 */ group_id: number; /** 群名称 */ group_name: string; /** 当前成员数 */ member_count: number; /** 最大成员数 */ max_member_count: number; } /** 群成员信息接口 */ export interface GroupMemberInfo { /** 群号 */ group_id: number; /** QQ号 */ user_id: number; /** 昵称 */ nickname: string; /** 群名片 */ card: string; /** 角色: 群主、管理员、普通成员 */ role: 'owner' | 'admin' | 'member'; /** 专属头衔 */ title: string; /** 加群时间(时间戳) */ join_time: number; /** 最后发言时间(时间戳) */ last_sent_time: number; } /** Cookie信息接口 */ export interface CookieInfo { /** Cookies字符串 */ cookies: string; /** bkn/gtk值 */ bkn: string; } /** 登录凭证信息接口 */ export interface CredentialsInfo { /** Cookies字符串 */ cookies: string; /** CSRF Token */ token: string; } /** 版本信息接口 */ export interface VersionInfo { /** 应用标识 */ app_name: string; /** 应用版本 */ app_version: string; /** 协议版本 */ protocol_version: string; } interface AICharacter { character_id: string; character_name: string; preview_url: string; } interface AICharacterGroup { type: string; characters: AICharacter[]; } /** 插件上下文接口 - 提供插件所需的各种方法和工具 */ export interface XincPluginContext { /** WebSocket客户端实例 */ eventBus: NCWebsocket; /** 注册事件处理器,自动推导事件类型对应的处理器参数类型 */ handle: <T extends EventKey>(event: T, handler: EventHandleMap[T]) => void; /** 取消注册事件处理器 */ off: <T extends EventKey>(event: T, handler: EventHandleMap[T]) => void; /** 获取插件数据目录路径 */ getDataPath: () => string; /** 获取插件配置目录路径 */ getConfigPath: () => string; /** 提取消息中的文本内容 */ getText: (e: any) => string; /** 获取QQ头像URL */ getAvatarLink: (qq: number | string) => string; /** 获取QQ群头像URL */ getGroupLink: (group_id: number | string) => string; /** 获取被引用的消息 */ getQuoteMsg: (e: any) => Promise<any>; /** 获取消息中的第一个图片URL */ getImageURL: (e: any) => string | null; /** 获取引用消息中的图片URL */ getQuoteImageURL: (e: any) => Promise<string | null>; /** 获取消息提及的图片URL(消息本身或引用消息中的图片) */ getMentionedImageURL: (e: any) => Promise<string | null>; /** 获取消息中最后一个被@的用户QQ号 */ getTaggedUserID: (e: any) => number | null; /** 上传文件到群文件根目录 */ uploadFileToDir: (group_id: number | string, file: string, name?: string) => Promise<void>; /** 判断是否是主人的消息 */ isRoot: (e: any) => boolean; /** 判断是否是管理员的消息 */ isAdmin: (e: any) => boolean; /** 判断是否是群主的消息 */ isGroupOwner: (e: any) => boolean; /** 判断是否是群管理员的消息 */ isGroupAdmin: (e: any) => boolean; /** 获取已加载的插件列表 */ getLoadedPlugins: () => XincPlugin[]; /** 重载指定插件 */ reloadPlugin: (name: string) => Promise<void>; /** 禁用插件 */ disablePlugin: (name: string) => Promise<void>; /** 启用插件 */ enablePlugin: (name: string) => Promise<void>; /** 获取框架状态 */ getStatus: () => Promise<{ uptime: string; memory: number; pluginCount: number; groupCount: number; }>; /** 关闭框架 */ shutdown: () => Promise<void>; /** 发送消息并返回消息ID */ respond: (e: any, message: any) => Promise<any>; /** 撤回消息 */ recallMsg: (message_id: number) => Promise<void>; /** 给好友点赞 * @param user_id 好友QQ号 * @param times 点赞次数(1-50),默认50次 */ sendLike: (user_id: number | string, times?: number) => Promise<void>; /** 踢出群成员 * @param group_id 群号 * @param user_id 要踢的QQ号 * @param reject_add_request 是否拉黑,默认false */ kick: (group_id: number | string, user_id: number | string, reject_add_request?: boolean) => Promise<void>; /** 群禁言 * @param group_id 群号 * @param user_id 要禁言的QQ号 * @param duration 禁言时长(秒),0表示解除禁言,默认1800(30分钟) */ mute: (group_id: number | string, user_id: number | string, duration?: number) => Promise<void>; /** 群组全员禁言 * @param group_id 群号 * @param enable 是否开启全员禁言,默认true */ muteGroup: (group_id: number | string, enable?: boolean) => Promise<void>; /** 设置群管理员 * @param group_id 群号 * @param user_id 要设置的QQ号 * @param enable 是否设为管理员,默认true */ setAdmin: (group_id: number | string, user_id: number | string, enable?: boolean) => Promise<void>; /** 设置群名片 * @param group_id 群号 * @param user_id 要设置的QQ号 * @param card 群名片,空字符串表示删除群名片 */ setGroupCard: (group_id: number | string, user_id: number | string, card: string) => Promise<void>; /** 设置群名 * @param group_id 群号 * @param group_name 新群名 */ setGroupName: (group_id: number | string, group_name: string) => Promise<void>; /** 退出群组 * @param group_id 群号 */ quitGroup: (group_id: number | string) => Promise<void>; /** 设置群头衔 * @param group_id 群号 * @param user_id 要设置的QQ号 * @param special_title 头衔,空字符串表示删除头衔 */ setTitle: (group_id: number | string, user_id: number | string, special_title: string) => Promise<void>; /** 获取群信息 * @param group_id 群号 * @returns 群信息对象 */ getGroupInfo: (group_id: number | string) => Promise<GroupInfo>; /** 获取群列表 * @returns 群信息数组 */ getGroupList: () => Promise<GroupInfo[]>; /** 获取群成员信息 * @param group_id 群号 * @param user_id 要查询的QQ号 * @param no_cache 是否不使用缓存 * @returns 群成员信息 */ getGroupMemberInfo: (group_id: number | string, user_id: number | string, no_cache?: boolean) => Promise<GroupMemberInfo>; /** 获取指定域名的 Cookies * @param domain 域名 * @returns Cookie信息 */ getCookie: (domain: string) => Promise<CookieInfo>; /** 获取 CSRF Token * @returns CSRF Token */ getCsrfToken: () => Promise<string>; /** 获取登录凭证 * @returns 凭证信息 */ getCredentials: () => Promise<CredentialsInfo>; /** 获取服务端版本信息 * @returns 版本信息 */ getVersionInfo: () => Promise<VersionInfo>; /** 获取群 AI 角色列表 * @param group_id 群号 * @returns AI 角色列表,按类型分组 */ getAiRoleList: (group_id: number | string) => Promise<AICharacterGroup[]>; /** 发送群 AI 语音 * @param group_id 群号 * @param character_id AI 角色 ID * @param text 要转换为语音的文本 * @returns 消息发送结果 */ sendGroupAiRecord: (group_id: number | string, character: string, text: string) => Promise<null>; /** 发送WebSocket消息 * @param action 动作名称 * @param params 参数对象 * @returns WebSocket响应结果 */ wsSend: (action: string, params: any) => Promise<any>; /** 获取所有插件列表,包含启用状态 */ getPlugins: () => Array<XincPlugin & { enabled: boolean; }>; } /** 插件接口 */ export interface XincPlugin { /** 插件ID */ name: string; /** 插件版本 */ version?: string; /** 插件描述 */ desc?: string; /** 插件安装方法 */ setup: (ctx: XincPluginContext) => void; } /** 插件管理器接口 */ export interface XincPluginManager { /** 加载插件 */ loadPlugin(plugin: XincPlugin): Promise<void>; /** 卸载插件 */ unloadPlugin(name: string): Promise<void>; /** 获取已加载的插件列表 */ getLoadedPlugins(): XincPlugin[]; } export declare class PluginManager implements XincPluginManager { private plugins; private cleanupFns; private eventHandlers; private eventBus; private dataDir; private configDir; private startTime; constructor(ws: NCWebsocket, dataDir: string, configDir: string); loadPlugin(plugin: XincPlugin): Promise<void>; unloadPlugin(name: string): Promise<void>; private formatUptime; getLoadedPlugins(): XincPlugin[]; private findPlugin; reloadPlugin(name: string): Promise<void>; enablePlugin(name: string): Promise<void>; disablePlugin(name: string): Promise<void>; } export declare function definePlugin(plugin: XincPlugin): XincPlugin; export {}; //# sourceMappingURL=plugin.d.ts.map