UNPKG

ntqq

Version:
255 lines (254 loc) 9.32 kB
import { Client } from "../client"; import { Contactable } from "../internal"; import { Sendable, GroupMessage, ImageElem, Anonymous, Quotable } from "../message"; import { FileSystem } from "./fileSystem"; import { GroupAdminEvent, GroupInviteEvent, GroupSignEvent, GroupMessageEvent, GroupMuteEvent, GroupPokeEvent, GroupRecallEvent, GroupRequestEvent, GroupTransferEvent, MemberDecreaseEvent, MemberIncreaseEvent, MessageRet } from "../events"; import { GroupMember } from "./groupMember"; /** 群 */ export declare class Group extends Contactable { readonly gin: number; private _info?; static as(this: Client, gin: number, strict?: boolean): Group; /** {@link gin} 的别名 */ get group_id(): number; /** 群资料 */ get info(): Group.Info | undefined; /** 群名 */ get name(): string | undefined; /** 我是否是群主 */ get is_owner(): boolean; /** 我是否是管理 */ get is_admin(): boolean; /** 是否全员禁言 */ get all_muted(): boolean; /** 我的禁言剩余时间 */ get mute_left(): number; /** 群文件系统 */ readonly fs: FileSystem; protected constructor(c: Client, gin: number, _info?: Group.Info | undefined); /** * 获取群员实例 * @param uid 群员账号 * @param strict 严格模式,若群员不存在会抛出异常 */ pickMember(uid: number, strict?: boolean): GroupMember; /** * 获取群头像url * @param size 头像大小,默认`0` * @param history 历史头像记录,默认`0`,若要获取历史群头像则填写1,2,3... * @returns 头像的url地址 */ getAvatarUrl(size?: 0 | 40 | 100 | 140, history?: number): string; /** 强制刷新群资料 */ renew(): Promise<Group.Info>; private _fetchMembers; /** 获取群员列表 */ getMemberMap(no_cache?: boolean): Promise<Map<number, GroupMember.Info>>; /** * 添加精华消息 * @param seq 消息序号 * @param rand 消息的随机值 */ addEssence(seq: number, rand?: number): Promise<string>; /** * 移除精华消息 * @param seq 消息序号 * @param rand 消息的随机值 */ removeEssence(seq: number): Promise<string>; /** * 发送一个文件 * @param file `string`表示从该本地文件路径上传,`Buffer`表示直接上传这段内容 * @param pid 上传的目标目录id,默认根目录 * @param name 上传的文件名,`file`为`Buffer`时,若留空则自动以md5命名 * @param callback 监控上传进度的回调函数,拥有一个"百分比进度"的参数 * @returns 上传的文件属性 */ sendFile(file: string | Buffer | Uint8Array, pid?: string, name?: string, callback?: (percentage: string) => void): Promise<import("./fileSystem").FileStat>; /** * 发送一条消息 * @param content 消息内容 * @param source 引用回复的消息 * @param anony 是否匿名 */ sendMsg(content: Sendable, source?: Quotable, anony?: Omit<Anonymous, "flag"> | boolean): Promise<MessageRet>; private _sendMsgByFrag; /** * 设置当前群成员消息屏蔽状态 * @param member_id * @param isScreen */ setScreenMemberMsg(member_id: number, isScreen?: boolean): Promise<boolean>; /** 设置群名 */ setName(name: string): Promise<boolean>; /** 全员禁言 */ muteAll(yes?: boolean): Promise<boolean>; /** 发送简易群公告 */ announce(content: string): Promise<boolean>; private _setting; /** 允许/禁止匿名 */ allowAnony(yes?: boolean): Promise<boolean>; /** 设置群备注 */ setRemark(remark?: string): Promise<void>; /** 禁言匿名群员,默认1800秒 */ muteAnony(flag: string, duration?: number): Promise<void>; /** 获取自己的匿名情报 */ getAnonyInfo(): Promise<Omit<Anonymous, "flag">>; /** 获取 @全体成员 的剩余次数 */ getAtAllRemainder(): Promise<number>; private _getLastSeq; /** * 标记`seq`之前的消息为已读 * @param seq 消息序号,默认为`0`,表示标记所有消息 */ markRead(seq?: number): Promise<void>; /** * 获取`seq`之前的`cnt`条聊天记录,默认从最后一条发言往前,`cnt`默认20不能超过20 * @param seq 消息序号,默认为`0`,表示从最后一条发言往前 * @param cnt 聊天记录条数,默认`20`,超过`20`按`20`处理 * @returns 群聊消息列表,服务器记录不足`cnt`条则返回能获取到的最多消息记录 */ getChatHistory(seq?: number, cnt?: number): Promise<GroupMessage[]>; /** * 获取群文件下载地址 * @param fid 文件id */ getFileUrl(fid: string): Promise<string>; /** 设置群头像 */ setAvatar(file: ImageElem["file"]): Promise<void>; /** * 邀请好友入群 * @param uid 好友账号 */ invite(uid: number): Promise<boolean>; /** 打卡 */ sign(): Promise<{ result: number; }>; /** 退群,若为群主则解散该群 */ quit(): Promise<boolean>; /** * 设置管理员,use {@link GroupMember.setAdmin} * @param uid 群员账号 * @param yes 是否设为管理员 */ setAdmin(uid: number, yes?: boolean): Promise<boolean>; /** * 设置头衔,use {@link GroupMember.setTitle} * @param uid 群员账号 * @param title 头衔名 * @param duration 持续时间,默认`-1`,表示永久 */ setTitle(uid: number, title?: string, duration?: number): Promise<boolean>; /** * 设置名片,use {@link GroupMember.setCard} * @param uid 群员账号 * @param card 名片 */ setCard(uid: number, card?: string): Promise<boolean>; /** * 踢出此群,use {@link GroupMember.kick} * @param uid 群员账号 * @param msg @todo 未知参数 * @param block 是否屏蔽群员 */ kickMember(uid: number, msg?: string, block?: boolean): Promise<boolean>; /** * 禁言群员,use {@link GroupMember.mute} * @param uid 群员账号 * @param duration 禁言时长(秒),默认`600` */ muteMember(uid: number, duration?: number): Promise<void>; /** * 戳一戳 * @param uid 群员账号 */ pokeMember(uid: number): Promise<boolean>; /** * 获取群内被禁言人 * @returns */ getMuteMemberList(): Promise<({ uin: number | null; unMuteTime: string | null; } | null)[]>; } /** 群聊消息事件 */ export interface GroupMessageEventMap { "message"(event: GroupMessageEvent): void; /** 普通消息 */ "message.normal"(event: GroupMessageEvent): void; /** 匿名消息 */ "message.anonymous"(event: GroupMessageEvent): void; } /** 群聊通知事件 */ export interface GroupNoticeEventMap { "notice"(event: MemberIncreaseEvent | GroupSignEvent | MemberDecreaseEvent | GroupRecallEvent | GroupAdminEvent | GroupMuteEvent | GroupTransferEvent | GroupPokeEvent): void; /** 群员新增 */ "notice.increase"(event: MemberIncreaseEvent): void; /** 群员减少 */ "notice.decrease"(event: MemberDecreaseEvent): void; /** 消息撤回 */ "notice.recall"(event: GroupRecallEvent): void; /** 管理员变更 */ "notice.admin"(event: GroupAdminEvent): void; /** 群禁言 */ "notice.ban"(event: GroupMuteEvent): void; /** 群打卡 */ "notice.sign"(event: GroupSignEvent): void; /** 群转让 */ "notice.transfer"(event: GroupTransferEvent): void; /** 戳一戳 */ "notice.poke"(event: GroupPokeEvent): void; } /** 群聊申请事件 */ export interface GroupRequestEventMap { "request"(event: GroupRequestEvent | GroupInviteEvent): void; /** 加群申请 */ "request.add"(event: GroupRequestEvent): void; /** 群邀请 */ "request.invite"(event: GroupInviteEvent): void; } /** 所有的群聊事件 */ export interface GroupEventMap extends GroupMessageEventMap, GroupNoticeEventMap, GroupRequestEventMap { } /** 群 */ export interface Group { /** 撤回消息 */ recallMsg(seq: number): Promise<boolean>; } export declare namespace Group { interface Info { /** 群号 */ group_id: number; /** 群名 */ group_name: string; /** 群员数 */ member_count: number; /** 群员上限 */ max_member_count: number; /** 群主账号 */ owner_id: number; /** 是否为该群管理员 */ admin_flag: boolean; /** 上次入群时间 */ last_join_time: number; /** 上次发言时间 */ last_sent_time?: number; /** 全体禁言时间 */ shutup_time_whole: number; /** 被禁言时间 */ shutup_time_me: number; /** 群创建时间 */ create_time?: number; /** 群活跃等级 */ grade?: number; /** 管理员上限 */ max_admin_count?: number; /** 在线群员数 */ active_member_count?: number; /** 群信息更新时间 */ update_time: number; } function fetchMember(this: Client, gin: number): Promise<Map<number, GroupMember.Info>>; }