export interface Tag { type: string; data: { [key: string]: any | undefined; }; } export declare class CQTag { readonly _type: T['type']; readonly _data: T['data']; constructor(type: T['type'], data: T['data']); /** * 用于获取data属性里的字段,
* 值得注意的是,当接受消息为 字符串格式 时,本方法返回类型永远为 `string`, * 当且仅当接受消息为 数组格式 时,返回类型才可能为正常类型 * @param key 字段 * @return 值 */ get(key: K): T['data'][K] | string; /** * 设置新值 * @param key 字段 * @param value 新值 * @return 替换前的值 */ set(key: K, value: T['data'][K]): T['data'][K]; toJSON(): Tag; toString(): string; /**浅拷贝 _data 对象*/ clone(): CQTag; /** 转换为纯消息段 */ valueOf(): Tag; [Symbol.toStringTag](): string; get tagName(): T['type']; } export declare const SPLIT: RegExp; export declare const CQ_TAG_REGEXP: RegExp; export declare const CQ: { /** 将携带 CQ码 的字符串转换为 CQ码数组 */ readonly parse: (msg: string | Tag[], debug?: boolean) => CQTag[]; /** * 转义 * @param str 欲转义的字符串 * @param [insideCQ=false] 是否在CQ码内 * @returns 转义后的字符串 */ readonly escape: (str: string, insideCQ?: boolean) => string; /** * 反转义 * * @param str 欲反转义的字符串 * @returns 反转义后的字符串 */ readonly unescape: (str: string) => string; /** * 纯文本 * @param text 纯文本内容 */ readonly text: (text: string) => CQText; /** * QQ 表情 * @param id QQ 表情 ID,处于 [0,221] 区间 * @see https://github.com/kyubotics/coolq-http-api/wiki/%E8%A1%A8%E6%83%85-CQ-%E7%A0%81-ID-%E8%A1%A8 */ readonly face: (id: number) => CQFace; /** * 语音 * @param file 语音文件名(或URL) * @param magic 发送时可选, 默认 0, 设置为 1 表示变声 * @param cache 只在通过网络 URL 发送时有效, 表示是否使用已缓存的文件, 默认 1 * @param proxy 只在通过网络 URL 发送时有效, 表示是否通过代理下载文件 ( 需通过环境变量或配置文件配置代理 ) , 默认 1 * @param timeout 只在通过网络 URL 发送时有效, 单位秒, 表示下载网络文件的超时时间 , 默认不超时 */ readonly record: (file: string, magic?: boolean, cache?: boolean, proxy?: boolean, timeout?: number) => CQRecord; /** * 短视频 * @param file 视频地址, 支持http和file发送 * @param cover 视频封面, 支持http, file和base64发送, 格式必须为jpg * @param c 通过网络下载视频时的线程数, 默认单线程. (在资源不支持并发时会自动处理) */ readonly video: (file: string, cover?: string, c?: 2 | 3) => CQVideo; /** * .@某人 * @param qq @的 QQ 号, `all` 表示全体成员 * @param name 当在群中找不到此QQ号的名称时使用 */ readonly at: (qq: number | 'all', name?: string) => CQAt; /** * 链接分享 * @param url URL * @param title 标题 * @param content 发送时可选, 内容描述 * @param image 发送时可选, 图片 URL */ readonly share: (url: string, title: string, content?: string, image?: string) => CQShare; /** * 音乐分享 * @param type 分别表示使用 QQ 音乐、网易云音乐、虾米音乐 * @param id 歌曲 ID */ readonly music: (type: 'qq' | '163' | 'xm', id: number) => CQTag; /** * 音乐自定义分享 * @param url 点击后跳转目标 URL * @param audio 音乐 URL * @param title 标题 * @param content 发送时可选, 内容描述 * @param image 发送时可选, 图片 URL */ readonly musicCustom: (url: string, audio: string, title: string, content?: string, image?: string) => CQMusicCustom; /** * 图片 * @param file 图片文件名 * @param type 图片类型, flash 表示闪照, show 表示秀图, 默认普通图片 * @param url 图片 URL * @param cache 只在通过网络 URL 发送时有效, 表示是否使用已缓存的文件, 默认 1 * @param id 发送秀图时的特效id, 默认为40000 * @param c 通过网络下载图片时的线程数, 默认单线程. (在资源不支持并发时会自动处理) * @see https://ishkong.github.io/go-cqhttp-docs/cqcode/#%E5%9B%BE%E7%89%87 */ readonly image: (file: string, type?: string, url?: string, cache?: number, id?: number, c?: number) => CQImage; /** * 回复 * @param id 回复时所引用的消息id, 必须为本群消息. */ readonly reply: (id: number) => CQReply; /** * 自定义回复 * @param text 自定义回复时的自定义QQ, 如果使用自定义信息必须指定. * @param qq 自定义回复时的自定义QQ, 如果使用自定义信息必须指定. * @param id 回复时所引用的消息id, 必须为本群消息. * @param time 可选. 自定义回复时的时间, 格式为Unix时间 * @param seq 起始消息序号, 可通过 get_msg 获得 */ readonly replyCustom: (text: string, qq: number, id?: number, time?: number, seq?: number) => CQReplyCustom; /** * 戳一戳 * @param qq 需要戳的成员 */ readonly poke: (qq: number) => CQPoke; /** * 礼物 * @param qq 接收礼物的成员 * @param id 礼物的类型 */ readonly gift: (qq: number, id: number) => CQGift; /** * 合并转发消息节点 * @param id 转发消息id, 直接引用他人的消息合并转发, 实际查看顺序为原消息发送顺序 */ readonly nodeId: (id: number) => CQNodeId; /** * 合并转发消息节点 * @param name 发送者显示名字 * @param user_id 发送者QQ号 * @param content 具体消息, 不支持转发套娃, 不支持引用回复 */ readonly node: (name: string, user_id: number | string, content: message) => CQNode; /** * XML 消息 * @param data xml内容, xml中的value部分, 记得实体化处理 * @param resid 可以不填 */ readonly xml: (data: string, resid?: number) => CQXml; /** * JSON 消息 * @param data json内容, json的所有字符串记得实体化处理 * @param resid 默认不填为0, 走小程序通道, 填了走富文本通道发送 */ readonly json: (data: string, resid?: number) => CQJson; /** * 一种xml的图片消息(装逼大图)
**PS** : xml 接口的消息都存在风控风险, 请自行兼容发送失败后的处理 ( 可以失败后走普通图片模式 ) * @param file 和image的file字段对齐, 支持也是一样的 * @param minwidth 默认不填为400, 最小width * @param minheight 默认不填为400, 最小height * @param maxwidth 默认不填为500, 最大width * @param maxheight 默认不填为1000, 最大height * @param source 分享来源的名称, 可以留空 * @param icon 分享来源的icon图标url, 可以留空 */ readonly cardimage: (file: string, minwidth?: number, minheight?: number, maxwidth?: number, maxheight?: number, source?: string, icon?: string) => CQCardImage; /** * 文本转语音 * @param text 内容 */ readonly tts: (text: string) => CQTts; /** * 自定义 CQ码 * @param type CQ码类型 * @param data CQ码参数 */ readonly custom: (type: T["type"], data?: T["data"]) => CQTag; readonly [Symbol.toStringTag]: () => string; }; export type message = string | msgTags[]; export type messageNode = NodeTags[]; export type msgTags = CQText | CQFace | CQRecord | CQVideo | CQAt | CQRps | CQDice | CQShake | CQAnonymous | CQShare | CQContact | CQLocation | CQMusic | CQMusicCustom | CQImage | CQReply | CQReplyCustom | CQRedBag | CQPoke | CQGift | CQForward | CQXml | CQJson | CQCardImage | CQTts; export type NodeTags = CQNode | CQNodeId; interface tts extends Tag { type: 'tts'; data: { /** 内容 */ text: string; }; } export declare class CQTts extends CQTag { valueOf(): tts; /** 内容 */ get text(): string; } interface cardimage extends Tag { type: 'cardimage'; data: { /** 和image的file字段对齐, 支持也是一样的 */ file: string; /** `收` 默认不填为400, 最小width */ minwidth?: number; /** `收` 默认不填为400, 最小height */ minheight?: number; /** `收` 默认不填为500, 最大width */ maxwidth?: number; /** `收` 默认不填为1000, 最大height */ maxheight?: number; /** `收` 分享来源的名称, 可以留空 */ source?: string; /** `收` 分享来源的icon图标url, 可以留空 */ icon?: string; }; } export declare class CQCardImage extends CQTag { valueOf(): cardimage; /** 和image的file字段对齐, 支持也是一样的 */ get file(): string; /** `收` 默认不填为400, 最小width */ get minwidth(): number | undefined; /** `收` 默认不填为400, 最小height */ get minheight(): number | undefined; /** `收` 默认不填为500, 最大width */ get maxwidth(): number | undefined; /** `收` 默认不填为1000, 最大height */ get maxheight(): number | undefined; /** `收` 分享来源的名称, 可以留空 */ get source(): string | undefined; /** `收` 分享来源的icon图标url, 可以留空 */ get icon(): string | undefined; } interface json extends Tag { type: 'json'; data: { /** json内容, json的所有字符串记得实体化处理 */ data: string; /** `收` 默认不填为0, 走小程序通道, 填了走富文本通道发送 */ resid?: number; }; } export declare class CQJson extends CQTag { valueOf(): json; /** json内容, json的所有字符串记得实体化处理 */ get data(): string; /** `收` 默认不填为0, 走小程序通道, 填了走富文本通道发送 */ get resid(): number | undefined; } interface xml extends Tag { type: 'xml'; data: { /** xml内容, xml中的value部分, 记得实体化处理 */ data: string; /** `收` 可以不填 */ resid?: number; }; } export declare class CQXml extends CQTag { valueOf(): xml; /** xml内容, xml中的value部分, 记得实体化处理 */ get data(): string; /** `收` 可以不填 */ get resid(): number | undefined; } interface file extends Tag { type: 'file'; data: { /** `收` 文件的路径 */ path: string; /** `收` 文件名 */ name: string; /** `收` 文件的大小 */ size: number; /** `收` 文件的id ¿ */ busid: number; }; } export declare class CQFile extends CQTag { valueOf(): file; /** 文件的路径 */ get path(): string; /** 文件名 */ get name(): string; /** `收` 文件的大小 */ get size(): number; /** `收` 文件的id ¿ */ get busid(): number; } interface node extends Tag { type: 'node'; data: { /** 发送者显示名字 */ name: string; /** 发送者QQ号 */ user_id: number | string; /** * 具体消息 * * 不支持转发套娃, 不支持引用回复 */ content: message; }; } export declare class CQNode extends CQTag { valueOf(): node; /**发送者显示名字*/ get name(): string; /**@deprecated 发送者QQ号*/ get uin(): string; /**发送者QQ号*/ get user_id(): string; /**具体消息,不支持转发套娃,不支持引用回复*/ get content(): message; } interface nodeId extends Tag { type: 'node'; data: { /** 转发消息id, 直接引用他人的消息合并转发, 实际查看顺序为原消息发送顺序 */ id: number; }; } export declare class CQNodeId extends CQTag { valueOf(): nodeId; /** 转发消息id, 直接引用他人的消息合并转发, 实际查看顺序为原消息发送顺序 */ get id(): number; } interface forward extends Tag { type: 'forward'; data: { /** 合并转发ID, 需要通过 {@link get_forward_msg} API获取转发的具体内容 */ id: string; }; } export declare class CQForward extends CQTag { valueOf(): forward; /** 合并转发ID, 需要通过 [get_forward_msg]{@link CQWebSocket.get_forward_msg} API获取转发的具体内容 */ get id(): string; } interface gift extends Tag { type: 'gift'; data: { /** 接收礼物的成员 */ qq: number; /** 礼物的类型
取值:[0,13]*/ id: number; }; } export declare class CQGift extends CQTag { valueOf(): gift; /** 接收礼物的成员 */ get qq(): number; /** 礼物的类型
取值:[0,13]*/ get id(): number; } interface poke extends Tag { type: 'poke'; data: { /** 需要戳的成员 */ qq: number; }; } export declare class CQPoke extends CQTag { valueOf(): poke; /** 需要戳的成员 */ get qq(): number; } interface redbag extends Tag { type: 'redbag'; data: { /**祝福语/口令*/ title: string; }; } export declare class CQRedBag extends CQTag { valueOf(): redbag; /**祝福语/口令*/ get title(): string; } interface reply extends Tag { type: 'reply'; data: { /**回复时所引用的消息id, 必须为本群消息.*/ id: number; }; } export declare class CQReply extends CQTag { valueOf(): reply; /**回复时所引用的消息id, 必须为本群消息.*/ get id(): number; } interface replyCustom extends Tag { type: 'reply'; data: { /**回复时所引用的消息id, 必须为本群消息.*/ id: number | undefined; /**自定义回复的信息*/ text: string; /**自定义回复时的自定义QQ, 如果使用自定义信息必须指定.*/ qq: number; /**可选. 自定义回复时的时间, 格式为Unix时间*/ time?: number; /**起始消息序号, 可通过 get_msg 获得*/ seq?: number; }; } export declare class CQReplyCustom extends CQTag { valueOf(): replyCustom; /**回复时所引用的消息id, 必须为本群消息.*/ get id(): number | undefined; /**自定义回复的信息*/ get text(): string; /**自定义回复时的自定义QQ, 如果使用自定义信息必须指定.*/ get qq(): number; /**可选. 自定义回复时的时间, 格式为Unix时间*/ get time(): number | undefined; /**起始消息序号, 可通过 get_msg 获得*/ get seq(): number | undefined; } interface image extends Tag { type: 'image'; data: { /** 图片文件名 */ file: string; /** 图片类型, flash 表示闪照, show 表示秀图, 默认普通图片 */ type?: string; /** `收` 图片 URL */ url?: string; /** 只在通过网络 URL 发送时有效, 表示是否使用已缓存的文件, 默认 1 */ cache?: number; /** 发送秀图时的特效id, 默认为40000
取值:[40000,40005]*/ id?: number; /** 通过网络下载图片时的线程数, 默认单线程. (在资源不支持并发时会自动处理) */ c?: number; }; } export declare class CQImage extends CQTag { valueOf(): image; /** 图片文件名 */ get file(): string; /** 图片类型, flash 表示闪照, show 表示秀图, 默认普通图片 */ get type(): string | undefined; /** `收` 图片 URL */ get url(): string | undefined; /** 只在通过网络 URL 发送时有效, 表示是否使用已缓存的文件, 默认 1 */ get cache(): number | undefined; /** 发送秀图时的特效id, 默认为40000
取值:[40000,40005]*/ get id(): number | undefined; /** 通过网络下载图片时的线程数, 默认单线程. (在资源不支持并发时会自动处理) */ get c(): number | undefined; } interface music extends Tag { type: 'music'; data: { /** 分别表示使用 QQ 音乐、网易云音乐、虾米音乐 */ type: 'qq' | '163' | 'xm'; /** 歌曲 ID */ id: number; }; } export declare class CQMusic extends CQTag { valueOf(): music; /** 分别表示使用 QQ 音乐、网易云音乐、虾米音乐 */ get type(): 'qq' | '163' | 'xm'; /** 歌曲 ID */ get id(): number; } interface musicCustom extends Tag { type: 'music'; data: { type: 'custom'; /** 点击后跳转目标 URL */ url: string; /** 音乐 URL */ audio: string; /** 标题 */ title: string; /** 发送时可选, 内容描述 */ content?: string; /** 发送时可选, 图片 URL */ image?: string; }; } export declare class CQMusicCustom extends CQTag { valueOf(): musicCustom; get type(): 'custom'; /** 点击后跳转目标 URL */ get url(): string; /** 音乐 URL */ get audio(): string; /** 标题 */ get title(): string; /** 发送时可选, 内容描述 */ get content(): string | undefined; /** 发送时可选, 图片 URL */ get image(): string | undefined; } interface location extends Tag { type: 'location'; data: { /**纬度*/ lat: number; /**经度*/ lon: number; /**`收` 发送时可选, 标题*/ title?: string; /**`收` 发送时可选, 内容描述*/ content?: string; }; } export declare class CQLocation extends CQTag { valueOf(): location; get lat(): number; get lon(): number; get title(): string | undefined; get content(): string | undefined; } interface contact extends Tag { type: 'contact'; data: { /**推荐好友/群*/ type: 'qq' | 'group'; /**被推荐的 QQ (群)号*/ id: number; }; } export declare class CQContact extends CQTag { valueOf(): contact; get type(): 'qq' | 'group'; get id(): number; } interface share extends Tag { type: 'share'; data: { /** URL */ url: string; /** 标题 */ title: string; /** `收` 内容描述 */ content?: string; /** `收` 图片 URL */ image?: string; }; } export declare class CQShare extends CQTag { valueOf(): share; get url(): string; get title(): string; get content(): string | undefined; get image(): string | undefined; } interface anonymous extends Tag { type: 'anonymous'; data: {}; } export declare class CQAnonymous extends CQTag { valueOf(): anonymous; } interface shake extends Tag { type: 'shake'; data: {}; } export declare class CQShake extends CQTag { valueOf(): shake; } interface dice extends Tag { type: 'dice'; data: {}; } export declare class CQDice extends CQTag { valueOf(): dice; } interface rps extends Tag { type: 'rps'; data: {}; } export declare class CQRps extends CQTag { valueOf(): rps; } interface at extends Tag { type: 'at'; data: { /** .@的 QQ 号, `all` 表示全体成员 */ qq: number | 'all'; /**当在群中找不到此QQ号的名称时才会生效*/ name: string | undefined; }; } export declare class CQAt extends CQTag { valueOf(): at; get qq(): number | 'all'; get name(): string | undefined; } interface video extends Tag { type: 'video'; data: { /**视频地址, 支持http和file发送*/ file: string; /**视频封面, 支持http, file和base64发送, 格式必须为jpg*/ cover?: string; /**通过网络下载视频时的线程数, 默认单线程. (在资源不支持并发时会自动处理)*/ c?: number; }; } export declare class CQVideo extends CQTag