import { int32, CanSend, CookiesData, CQWebSocketOptions, CSRFTokenData, Device, DownloadFile, ErrorEventHandle, EssenceMessage, EventHandle, FileUrl, ForwardData, FriendInfo, SourceInfo, GroupAtAllRemain, GroupData, GroupFileSystemInfo, GroupHonorInfo, GroupInfo, GroupMemberInfo, GroupRootFileSystemInfo, GroupSystemMSG, ILogger, int64, LoginInfo, MessageId, MessageInfo, OCRImage, PartialSocketHandle, PrivateData, PromiseRes, QiDianAccountInfo, QQImageData, QuickOperation, RecordFormatData, SocketHandle, Status, StrangerInfo, URLSafely, Variants, VersionInfo, WordSlicesData, WSSendParam, WSSendReturn, GroupNotice, ForwardId, GroupAddRequest, uint32 } from './Interfaces'; import { CQTag, message, messageNode } from './tags'; export declare class CQWebSocket { private _logger; private _responseHandlers; private _eventBus; private readonly _accessToken; private readonly _baseUrl; private readonly _clientConfig?; private readonly _debug; private _socket?; private _socketEvent?; private _sendTimeoutTimer?; /** * @param {boolean} debug 是否启用 DEBUG 模式 */ constructor({ protocol, host, port, accessToken, baseUrl, clientConfig }?: CQWebSocketOptions, debug?: boolean); /** gocqhttp 接口 */ /**获取登录号信息*/ get_login_info(): PromiseRes; /**设置登录号资料 * @param nickname 名称 * @param company 公司 * @param email 邮箱 * @param college 学校 * @param personal_note 个人说明 */ set_qq_profile(nickname: string, company: string, email: string, college: string, personal_note: string): PromiseRes; /**获取企点账号信息,该API只有企点协议可用*/ qidian_get_account_info(): PromiseRes; /** * 获取在线机型 * @param model 机型名称 */ _get_model_show(model: string): PromiseRes; /** * 设置在线机型 * @param model 机型名称 * @param model_show */ _set_model_show(model: string, model_show: string): PromiseRes; /** * 获取当前账号在线客户端列表 * @param no_cache 是否无视缓存 */ get_online_clients(no_cache?: boolean): PromiseRes; /** * 获取陌生人信息 * @param user_id QQ 号 * @param no_cache 是否不使用缓存(使用缓存可能更新不及时, 但响应更快) */ get_stranger_info(user_id: int64, no_cache?: boolean): PromiseRes; /**获取好友列表*/ get_friend_list(): PromiseRes; /**获取单向好友列表*/ get_unidirectional_friend_list(): PromiseRes; /** * 删除好友 * @param user_id 好友 QQ 号 */ delete_friend(user_id: int64): PromiseRes; /** * 删除单向好友 * @param user_id 好友 QQ 号 */ delete_unidirectional_friend(user_id: int64): PromiseRes; /** * 发送私聊消息 * @param user_id 对方 QQ 号 * @param message 要发送的内容 * @param auto_escape 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 */ send_private_msg(user_id: int64, message: message, group_id?: int64, auto_escape?: boolean): PromiseRes; /** * 发送群消息 * @param group_id 群号 * @param message 要发送的内容 * @param auto_escape 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 */ send_group_msg(group_id: int64, message: message, auto_escape?: boolean): PromiseRes; /** * 发送消息 * @param data */ send_msg(data: PrivateData | GroupData): PromiseRes; /** * 获取消息 * @param message_id 消息 ID */ get_msg(message_id: int32): PromiseRes; /** * 撤回消息 * @param message_id 消息 ID */ delete_msg(message_id: int32): PromiseRes; /** * 标记消息已读 * @param message_id 消息 ID */ mark_msg_as_read(message_id: int32): PromiseRes; /** * 获取合并转发内容 * @param message_id 消息id */ get_forward_msg(message_id: string): PromiseRes; /** * 发送合并转发(群) * @param group_id 群号 * @param messages 自定义转发消息 */ send_group_forward_msg(group_id: int64, messages: messageNode): PromiseRes; /** * 发送合并转发(好友) * @param user_id QQ号 * @param messages 自定义转发消息 */ send_private_forward_msg(user_id: int64, messages: messageNode): PromiseRes; /** * 获取群消息历史记录 * @param message_seq 起始消息序号, 可通过 `get_msg` 获得, 不提供起始序号将默认获取最新的消息 * @param group_id 群号 * @return 从起始序号开始的前19条消息 */ get_group_msg_history(group_id: int64, message_seq?: int64): PromiseRes; /** * 获取图片信息 * @param file 图片缓存文件名 */ get_image(file: string): PromiseRes; /**检查是否可以发送图片*/ can_send_image(): PromiseRes; /** * 图片OCR * @param image 图片ID */ ocr_image(image: string): PromiseRes; /** * 获取语音 * @protected * @param file 收到的语音文件名(消息段的 file 参数) * @param out_format 要转换到的格式, 目前支持 mp3、amr、wma、m4a、spx、ogg、wav、flac */ protected get_record(file: string, out_format: string): PromiseRes; /**检查是否可以发送语音*/ can_send_record(): PromiseRes; /** * 处理加好友请求 * @param flag 加好友请求的 flag(需从上报的数据中获得) * @param approve 是否同意请求 * @param remark 添加后的好友备注(仅在同意时有效) */ set_friend_add_request(flag: string, approve?: boolean, remark?: string): PromiseRes; /** * 处理加群请求/邀请 * @param flag 加好友请求的 flag(需从上报的数据中获得) * @param sub_type add 或 invite, 请求类型(需要和上报消息中的 sub_type 字段相符) * @param approve 是否同意请求/邀请 * @param reason 拒绝理由(仅在拒绝时有效) */ set_group_add_request(flag: string, sub_type: string, approve?: boolean, reason?: string): PromiseRes; /** * 获取群信息 * 如果机器人尚未加入群, `group_create_time`, `group_level`, `max_member_count` 和 `member_count` 将会为0 * @param group_id 群号 * @param no_cache 是否不使用缓存(使用缓存可能更新不及时, 但响应更快) */ get_group_info(group_id: int64, no_cache?: boolean): PromiseRes; /**获取群列表 * @param no_cache 是否不使用缓存(使用缓存可能更新不及时, 但响应更快) */ get_group_list(no_cache?: boolean): PromiseRes; /** * 获取群成员信息 * @param group_id 群号 * @param user_id QQ 号 * @param no_cache 是否不使用缓存(使用缓存可能更新不及时, 但响应更快) */ get_group_member_info(group_id: int64, user_id: int64, no_cache?: boolean): PromiseRes; /** * 获取群成员列表 * * **注:** 获取列表时和获取单独的成员信息时, 某些字段可能有所不同 * * 例如:`area`、`title` 等字段在获取列表时无法获得, 具体应以[单独的成员信息]{@link get_group_member_info}为准。 * @param group_id 群号 * @see get_group_member_info */ get_group_member_list(group_id: int64, no_cache?: boolean): PromiseRes; /** * 获取群荣誉信息 * @param group_id 群号 * @param type 要获取的群荣誉类型, 可传入 `talkative`, `performer`, `legend`, `strong_newbie`, `emotion` * 以分别获取单个类型的群荣誉数据, 或传入 `all` 获取所有数据 */ get_group_honor_info(group_id: int64, type: 'talkative' | 'performer' | 'legend' | 'strong_newbie' | 'emotion' | 'all'): PromiseRes; /**获取群系统消息, 如果列表不存在任何消息, 将返回 `null`*/ get_group_system_msg(): PromiseRes; /** * 获取精华消息列表 * @param group_id 群号 */ get_essence_msg_list(group_id: int64): PromiseRes; /** * 获取群 @全体成员 剩余次数 * @param group_id 群号 */ get_group_at_all_remain(group_id: int64): PromiseRes; /** * 设置群名 * @param group_id 群号 * @param group_name 新群名 */ set_group_name(group_id: int64, group_name?: string): PromiseRes; /** * 设置群头像
* 目前这个API在登录一段时间后因cookie失效而失效, 请考虑后使用 * @param group_id 群号 * @param file 图片文件名,支持以下几种格式:
* - 绝对路径, 例如 `file:///C:\\anyUri\fileName.png`, 格式使用 [`file` URI]{@link https://tools.ietf.org/html/rfc8089}
* - 网络 URL, 例如 `http://anyUrl/name.jpg`
* - Base64 编码, 例如 `base64://anyString` * @param cache 表示是否使用已缓存的文件,通过网络 URL 发送时有效, `1` 表示使用缓存, `0` 关闭关闭缓存, 默认 为 `1` */ set_group_portrait(group_id: int64, file: string, cache?: number): PromiseRes; /** * 群组设置管理员 * @param group_id 群号 * @param user_id 要设置管理员的 QQ 号 * @param enable true 为设置, false 为取消 */ set_group_admin(group_id: int64, user_id: int64, enable?: boolean): PromiseRes; /** * 设置群名片(群备注) * @param group_id 群号 * @param user_id 要设置的 QQ 号 * @param card 群名片内容, 不填或空字符串表示删除群名片 */ set_group_card(group_id: int64, user_id: int64, card?: string): PromiseRes; /** * 设置群组专属头衔 * @param group_id 群号 * @param user_id 要设置的 QQ 号 * @param special_title 专属头衔, 不填或空字符串表示删除专属头衔 * @param duration 专属头衔有效期, 单位秒, -1 表示永久, 不过此项似乎没有效果, 可能是只有某些特殊的时间长度有效, 有待测试 */ set_group_special_title(group_id: int64, user_id: int64, special_title?: string, duration?: uint32): PromiseRes; /** * 群组单人禁言 * @param group_id 群号 * @param user_id 要禁言的 QQ 号 * @param duration 禁言时长, 单位秒, 0 表示取消禁言 */ set_group_ban(group_id: int64, user_id: int64, duration?: uint32): PromiseRes; /** * 群组全员禁言 * @param group_id 群号 * @param enable 是否禁言 */ set_group_whole_ban(group_id: int64, enable?: boolean): PromiseRes; /** * 群组匿名用户禁言 * @param group_id 群号 * @param anonymous 可选,优先, 要禁言的匿名用户对象(群消息上报的 anonymous 字段) * @param anonymous_flag 选一, 要禁言的匿名用户的 flag(需从群消息上报的数据中获得) * @param duration 禁言时长, 单位秒, 无法取消匿名用户禁言 */ set_group_anonymous_ban(group_id: int64, anonymous?: any, anonymous_flag?: string, duration?: number): PromiseRes; /** * 设置精华消息 * @param message_id 消息ID */ set_essence_msg(message_id: int32): PromiseRes; /** * 移出精华消息 * @param message_id 消息ID */ delete_essence_msg(message_id: int64): PromiseRes; /** * 群打卡 * @deprecated */ protected send_group_sign(group_id: int64): PromiseRes; /** * 群组匿名 * @protected * @param group_id 群号 * @param enable 是否允许匿名聊天 */ protected set_group_anonymous(group_id: int64, enable?: boolean): PromiseRes; /** * 发送群公告 * @param group_id QQ 号 * @param content 公告内容 */ _send_group_notice(group_id: int64, content: string, image: string): PromiseRes; /** * 发送群公告 * @param group_id QQ群号 */ _get_group_notice(group_id: int64): PromiseRes; /** * 群组踢人 * @param group_id 群号 * @param user_id 要踢的 QQ 号 * @param reject_add_request 拒绝此人的加群请求 */ set_group_kick(group_id: int64, user_id: int64, reject_add_request?: boolean): PromiseRes; /** * 退出群组 * @param group_id 群号 * @param is_dismiss 是否解散, 如果登录号是群主, 则仅在此项为 true 时能够解散 */ set_group_leave(group_id: int64, is_dismiss?: boolean): PromiseRes; /** * 上传群文件
* 在不提供 folder 参数的情况下默认上传到根目录 只能上传本地文件, 需要上传 http 文件的话请先调用 download_file API下载 * @param group_id 群号 * @param file 本地文件路径 * @param name 储存名称 * @param folder 父目录ID */ upload_group_file(group_id: int64, file: string, name: string, folder?: string): PromiseRes; /** * 删除群文件 * @param group_id QQ群号 * @param file_id 文件ID * @param busid 文件类型 */ delete_group_file(group_id: int64, file_id: string, busid: int32): PromiseRes; /** * 创建群文件文件夹 */ create_group_file_folder(group_id: int64, name: string, parent_id: '/'): PromiseRes; /** * 删除群文件文件夹 */ delete_group_folder(group_id: int64, folder_id: string): PromiseRes; /** * 获取群文件系统信息 * @param group_id 群号 */ get_group_file_system_info(group_id: int64): PromiseRes; /** * 获取群根目录文件列表 * @param group_id 群号 */ get_group_root_files(group_id: int64): PromiseRes; /** * 获取群子目录文件列表 * @param group_id 群号 * @param folder_id 文件夹ID 参考 [GroupFolderInfo]{@link GroupFolderInfo.folder_id} 对象 */ get_group_files_by_folder(group_id: int64, folder_id: string): PromiseRes; /** * 获取群文件资源链接 * @param group_id 群号 * @param file_id 文件ID 参考 [GroupFileInfo]{@link GroupFileInfo.file_id} 对象 * @param busid 文件类型 参考 [GroupFileInfo]{@link GroupFileInfo.busid} 对象 * @return 返回下载链接 */ get_group_file_url(group_id: int64, file_id: string, busid: int32): PromiseRes; /** * 上传私聊文件 * @param user_id qq号 * @param file 文件的路径 * @param name 文件名称 */ upload_private_file(user_id: int64, file: string, name: string): PromiseRes; /** * 获取 Cookies * @param domain 需要获取 cookies 的域名 */ protected get_cookies(domain: string): PromiseRes; /** * 获取 CSRF Token */ protected get_csrf_token(): PromiseRes; /** * 获取 QQ 相关接口凭证 * @protected * @param domain 需要获取 cookies 的域名 */ protected get_credentials(domain: string): PromiseRes; /**获取版本信息*/ get_version_info(): PromiseRes; /** * 获取状态 * **注意**:所有统计信息都将在重启后重制 */ get_status(): PromiseRes; /** * 重启 go-cqhttp * @param delay 要延迟的毫秒数, 如果默认情况下无法重启, 可以尝试设置延迟为 2000 左右 */ protected set_restart(delay?: number): PromiseRes; /** * 清理缓存 * @protected */ protected clean_cache(): PromiseRes; /** * 重载事件过滤器 * @param file 事件过滤器文件 */ reload_event_filter(file: string): PromiseRes; /** * 下载文件到缓存目录
* 通过这个API下载的文件能直接放入CQ码作为图片或语音发送 调用后会阻塞直到下载完成后才会返回数据,请注意下载大文件时的超时 * @param url 链接地址 * @param thread_count 下载线程数 * @param headers 自定义请求头 * 格式:
* 字符串:`User-Agent=YOUR_UA[\r\n]Referer=https://www.baidu.com`
* * JSON数组:`["User-Agent=YOUR_UA","Referer=https://www.baidu.com"]` */ download_file(url: string, thread_count: number, headers: string | string[]): PromiseRes; /** * 检查链接安全性 * @param url 需要检查的链接 */ check_url_safely(url: string): PromiseRes; /** * 获取中文分词(隐藏 API) * @deprecated * @param content 内容 */ get_word_slices(content: string): PromiseRes; /** * 对事件执行快速操作(隐藏 API) * @param context 事件数据对象, 可做精简, 如去掉 message 等无用字段 * @param operation 快速操作对象, 例如 `{ "ban": true, "reply": "请不要说脏话"}` * @deprecated */ handle_quick_operation(context: SocketHandle[T], operation: QuickOperation[T]): PromiseRes; /**重连*/ reconnect(): void; /**连接*/ connect(): void; /**断开*/ disconnect(): void; /** * 发送消息 * @param method api名称 * @param params 消息内容 * @return api调用结果 */ send(method: T, params: WSSendParam[T]): Promise; /** * 注册监听方法,解除监听调用 [off]{@link off} 方法
* 若要只执行一次,请调用 [once]{@link once} 方法 * @param event * @param handle * @return 用于当作参数调用 [off]{@link off} 解除监听 */ on(event: T, handle: EventHandle): EventHandle; /** * 只执行一次,执行后删除方法 * @param event * @param handle * @return 用于当作参数调用 [off]{@link off} 解除监听 */ once(event: T, handle: EventHandle): EventHandle; /** * 解除监听方法,注册监听调用 [on]{@link on} 方法,或 [once]{@link once} 方法 * @param event * @param handle */ off(event: T, handle: EventHandle): this; /** * 手动模拟触发某个事件 * @param type * @param context * @param cqTags */ emit(type: T, context: SocketHandle[T], cqTags?: CQTag[]): this; /** * 同时注册多种监听方法,解除监听调用 [unbind]{@link unbind} 方法
* 当 `option` 参数为 `onceAll` 时, 也可以手动调用返回值中任意一个方法来解除监听 * @param option - * - `on` : 相当于为每个方法调用一次 [on]{@link on}
* - `once` : 相当于为每个方法调用一次 [once]{@link once}
* - `onceAll` : 只执行一次,执行后删除本次 `event` 中所有键对应的方法
* - 其他 : 相当于 `on` * @param [event={}] * @return 用于当作参数调用 [unbind]{@link unbind} 解除监听 */ bind(option: 'on' | 'once' | 'onceAll', event?: PartialSocketHandle): PartialSocketHandle; /** * 同时解除多种监听方法,注册监听调用 [bind]{@link bind} 方法 * @param [event={}] */ unbind(event?: PartialSocketHandle): this; private _onmessage; private _onmessageEvent; private _close; /** * 获取随机唯一ID
* 原本实现为 `Date.now().toString(36);`, `Date.now() - Date.now() === 0` 故废弃
* 原本实现为 `shortid.generate()`,测试:1.1-1.9毫秒之间
* 现实现为 `process.hrtime().toString(36)`, 测试:0.3-0.9毫秒之间 * @return "(36),(36)" */ getECHO(): string; /**状态信息*/ get state(): Status; /**获取当前登录账号的 QQ 号, 当获取失败时返回 `-1`*/ get qq(): number; get socketData(): { qq: number; status: Status; }; get errorEvent(): ErrorEventHandle; /**设置当注册的事件运行失败时,的回调方法,记录出错的事件与方法*/ set errorEvent(value: ErrorEventHandle); [Symbol.toStringTag](): string; get logger(): ILogger; set logger(v: ILogger); get debug(): boolean; } /**事件总类*/ export declare class CQEvent { private _isCancel; readonly bot: CQWebSocket; readonly contextType: T; readonly context: SocketHandle[T]; /**非空,但仅在 `messageType` 情况下有内容*/ readonly cqTags: CQTag[]; constructor(bot: CQWebSocket, type: T, context: SocketHandle[T], cqTags?: CQTag[]); /** * 是否已经停止冒泡 * @see stopPropagation */ get isCanceled(): boolean; /**停止冒泡,调用后停止后续方法的调用*/ stopPropagation(): void; [Symbol.toStringTag](): string; }