ntqq
Version:
QQ protocol for NodeJS!
118 lines (117 loc) • 4.04 kB
TypeScript
import { FileElem, PrivateMessage, Quotable, Sendable } from "../message";
import { Contactable } from "../internal";
import { pb } from "../core";
import { Client } from "../client";
import { Gender } from "../common";
import { MessageRet } from "../events";
export interface User {
/** 撤回消息 */
recallMsg(time: number): Promise<boolean>;
}
/** 用户 */
export declare class User extends Contactable {
readonly uin: number;
/** `this.uin`的别名 */
get user_id(): number;
get is_friend(): boolean;
static as(this: Client, uid: number): User;
protected constructor(c: Client, uin: number);
/** 返回作为好友的实例 */
asFriend(strict?: boolean): import("./friend").Friend;
/** 返回作为某群群员的实例 */
asMember(gid: number, strict?: boolean): import("./groupMember").GroupMember;
/**
* 获取头像url
* @param size 头像大小,默认`0`
* @returns 头像的url地址
*/
getAvatarUrl(size?: 0 | 40 | 100 | 140): string;
getAddFriendSetting(): Promise<void>;
/**
* 点赞,支持陌生人点赞
* @param times 点赞次数,默认1次
*/
thumbUp(times?: number): Promise<void>;
/** 查看资料 */
getSimpleInfo(): Promise<void>;
/**
* 获取`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>;
private _getRouting;
/**
* 发送一条消息
* @param content 消息内容
* @param source 引用回复的消息
*/
sendMsg(content: Sendable, source?: Quotable): Promise<MessageRet>;
protected _sendMsg(proto3: pb.Encodable, brief: string, file?: boolean): Promise<{
user_id: number;
seq: number;
time: number;
}>;
/**
* 回添双向好友
* @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 declare class UserMap<K = string | symbol, T extends User.Info = any> extends Map<K, T> {
getByUid(uid: string): T | undefined;
}
export declare namespace User {
interface Info {
/** 用户qq */
user_id: number;
/** uid */
uid: string;
/** 昵称 */
nickname: string;
/** 性别 */
sex?: Gender;
}
}