UNPKG

icqq

Version:

QQ protocol for NodeJS!

219 lines (218 loc) 7.87 kB
/// <reference types="node" /> import { pb } from "./core"; import { Gender } from "./common"; import { Sendable, PrivateMessage, Quotable, FileElem } from "./message"; import { Contactable } from "./internal"; import { FriendDecreaseEvent, FriendIncreaseEvent, FriendPokeEvent, FriendRecallEvent, FriendRequestEvent, GroupInviteEvent, MessageRet, PrivateMessageEvent } from "./events"; import { FriendInfo } from "./entities"; type Client = import("./client").Client; export interface User { /** 撤回消息 */ recallMsg(msg: PrivateMessage): Promise<boolean>; recallMsg(msgid: string): Promise<boolean>; recallMsg(seq: number, rand: number, time: number): Promise<boolean>; } /** 用户 */ export declare class User extends Contactable { readonly uid: number; /** `this.uid`的别名 */ get user_id(): number; static as(this: Client, uid: number): User; protected constructor(c: Client, uid: number); /** 返回作为好友的实例 */ asFriend(strict?: boolean): Friend; /** 返回作为某群群员的实例 */ asMember(gid: number, strict?: boolean): import("./member").Member; /** * 获取头像url * @param size 头像大小,默认`0` * @returns 头像的url地址 */ getAvatarUrl(size?: 0 | 40 | 100 | 140): string; getAddFriendSetting(): Promise<number>; /** * 点赞,支持陌生人点赞 * @param times 点赞次数,默认1次 */ thumbUp(times?: number): Promise<boolean>; /** 查看资料 */ getSimpleInfo(): Promise<{ /** 账号 */ user_id: number; /** 昵称 */ nickname: string; /** 性别 */ sex: Gender; /** 年龄 */ age: number; /** 地区 */ area: string; }>; /** * 获取`time`往前的`cnt`条聊天记录 * @param time 默认当前时间,为时间戳的分钟数(`Date.now() / 1000`) * @param cnt 聊天记录条数,默认`20`,超过`20`按`20`处理 * @returns 私聊消息列表,服务器记录不足`cnt`条则返回能获取到的最多消息记录 */ getChatHistory(time?: number, cnt?: number): Promise<PrivateMessage[]>; /** * 标记`time`之前为已读 * @param time 默认当前时间,为时间戳的分钟数(`Date.now() / 1000`) */ markRead(time?: number): Promise<void>; /** * 撤回消息,cqhttp方法用 */ recallMsg(param: number, rand: number, time: number): Promise<boolean>; /** * 撤回消息 * @param message_id 消息id */ recallMsg(message_id: string): Promise<boolean>; /** * 撤回消息 * @param message 私聊消息对象 */ recallMsg(message: PrivateMessage): Promise<boolean>; private _getRouting; /** * 发送一条消息 * @param content 消息内容 * @param source 引用回复的消息 */ sendMsg(content: Sendable, source?: Quotable): Promise<MessageRet>; protected _sendMsg(proto3: pb.Encodable, brief: string, file?: boolean): Promise<MessageRet>; /** * 回添双向好友 * @param seq 申请消息序号 * @param remark 好友备注 */ addFriendBack(seq: number, remark?: string): Promise<boolean>; /** * 处理好友申请 * @param seq 申请消息序号 * @param yes 是否同意 * @param remark 好友备注 * @param block 是否屏蔽来自此用户的申请 */ setFriendReq(seq: number, yes?: boolean, remark?: string, block?: boolean): Promise<boolean>; /** * 处理入群申请 * @param gid 群号 * @param seq 申请消息序号 * @param yes 是否同意 * @param reason 若拒绝,拒绝的原因 * @param block 是否屏蔽来自此用户的申请 */ setGroupReq(gid: number, seq: number, yes?: boolean, reason?: string, block?: boolean): Promise<boolean>; /** * 处理群邀请 * @param gid 群号 * @param seq 申请消息序号 * @param yes 是否同意 * @param block 是否屏蔽来自此群的邀请 */ setGroupInvite(gid: number, seq: number, yes?: boolean, block?: boolean): Promise<boolean>; /** * 获取文件信息 * @param fid 文件id */ getFileInfo(fid: string): Promise<Omit<FileElem, "type"> & Record<"url", string>>; /** * 获取离线文件下载地址 * @param fid 文件id */ getFileUrl(fid: string): Promise<string>; } /** 私聊消息事件 */ export interface PrivateMessageEventMap { "message"(event: PrivateMessageEvent): void; /** 好友的消息 */ "message.friend"(event: PrivateMessageEvent): void; /** 群临时对话 */ "message.group"(event: PrivateMessageEvent): void; /** 其他途径 */ "message.other"(event: PrivateMessageEvent): void; /** 我的设备 */ "message.self"(event: PrivateMessageEvent): void; } /** 好友通知事件 */ export interface FriendNoticeEventMap { "notice"(event: FriendIncreaseEvent | FriendDecreaseEvent | FriendRecallEvent | FriendPokeEvent): void; /** 新增好友 */ "notice.increase"(event: FriendIncreaseEvent): void; /** 好友减少 */ "notice.decrease"(event: FriendDecreaseEvent): void; /** 撤回消息 */ "notice.recall"(event: FriendRecallEvent): void; /** 戳一戳 */ "notice.poke"(event: FriendPokeEvent): void; } /** 好友申请事件 */ export interface FriendRequestEventMap { "request"(event: FriendRequestEvent): void; /** 群邀请 */ "request.invite"(event: GroupInviteEvent): void; /** 添加好友 */ "request.add"(event: FriendRequestEvent): void; /** 单向好友 */ "request.single"(event: FriendRequestEvent): void; } /** 所有的好友事件 */ export interface FriendEventMap extends PrivateMessageEventMap, FriendNoticeEventMap, FriendRequestEventMap { } /** 好友 */ export declare class Friend extends User { private _info?; static as(this: Client, uid: number, strict?: boolean): Friend; /** 好友资料 */ get info(): FriendInfo | undefined; /** 昵称 */ get nickname(): string | undefined; /** 性别 */ get sex(): Gender | undefined; /** 备注 */ get remark(): string | undefined; /** 分组id */ get class_id(): number | undefined; /** 分组名 */ get class_name(): string | undefined; protected constructor(c: Client, uid: number, _info?: FriendInfo | undefined); /** 设置备注 */ setRemark(remark: string): Promise<void>; /** 设置分组(注意:如果分组id不存在也会成功) */ setClass(id: number): Promise<void>; /** 戳一戳 */ poke(self?: boolean): Promise<boolean>; /** * 删除好友 * @param block 屏蔽此好友的申请,默认为`true` */ delete(block?: boolean): Promise<boolean>; /** * 发送离线文件 * @param file `string`表示从该本地文件路径获取,`Buffer`表示直接发送这段内容 * @param filename 对方看到的文件名,`file`为`Buffer`时,若留空则自动以md5命名 * @param callback 监控上传进度的回调函数,拥有一个"百分比进度"的参数 * @returns 文件id(撤回时使用) */ sendFile(file: string | Buffer | Uint8Array, filename?: string, callback?: (percentage: string) => void): Promise<string>; /** * 撤回离线文件 * @param fid 文件id */ recallFile(fid: string): Promise<boolean>; /** * 转发离线文件 * @param fid 文件fid * @param group_id 群号,转发群文件时填写 * @returns 转发成功后新文件的id */ forwardFile(fid: string, group_id?: number): Promise<string>; /** * 查找机器人与这个人的共群 * @returns */ searchSameGroup(): Promise<any>; } export {};