import { Contactable } from "./contactable"; import { Client } from "./client"; import { User, UserInfo } from "./friend"; import { Gender, GroupRole } from "./common"; import { GroupAdminEvent, GroupInviteEvent, GroupMessageEvent, GroupMuteEvent, GroupPokeEvent, GroupRecallEvent, GroupRequestEvent, GroupTransferEvent, MemberDecreaseEvent, MemberIncreaseEvent, MessageRet } from "./event"; import { EventDeliver } from "event-deliver"; import { Quotable, Sendable } from "./message"; import { GFS } from "./fileSystem"; export interface GroupMessageEventMap { 'message'(event: GroupMessageEvent): void; 'message.normal'(event: GroupMessageEvent): void; 'message.anonymous'(event: GroupMessageEvent): void; } export interface GroupNoticeEventMap { 'notice'(event: MemberIncreaseEvent | 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.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 MemberEventMap extends GroupEventMap { } export declare class Group extends Contactable { readonly group_id: number; members: Map; gfs: GFS; constructor(c: Client, group_id: number); get info(): GroupInfo; set info(info: GroupInfo); getInfo(cache?: boolean): Promise; /** 获取一枚群员实例 */ pickMember(uid: number): Member; kickMember(member_id: number, reject_add_request?: boolean): Promise; muteMember(member_id: number, duration?: number): Promise; muteAnonymous(flag: string, duration?: number): Promise; muteAll(enable?: boolean): Promise; setAdmin(member_id: number, enable?: boolean): Promise; setMemberCard(member_id: number, card: string): Promise; setName(group_name: string): Promise; quit(is_dismiss?: boolean): Promise; setMemberTitle(member_id: number, title: string, duration?: number): Promise; sign(): Promise; sendMsg(message: Sendable, quote?: Quotable): Promise; static as(this: Client, group_id: number): Group; } export interface GroupInfo { 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; } export interface MemberInfo extends UserInfo { group_id: number; nickname: string; sex: Gender; card: string; age: number; area?: string; join_time: number; last_sent_time: number; level: number; rank?: string; role: GroupRole; title: string; title_expire_time: number; shutup_time: number; update_time: number; } /** @ts-ignore ts(2417) 群员(继承User) */ export declare class Member extends User { group: Group; group_id: number; user_id: number; info: MemberInfo; constructor(c: Client, gid: number, uid: number); static as(this: Client, gid: number, uid: number): Member; kick(reject_add_request?: boolean): Promise; mute(duration?: number): Promise; setAdmin(enable?: boolean): Promise; setCard(card: string): Promise; setTitle(title: string, duration?: number): Promise; } export interface Group { before(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; before(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; after(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; after(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; on(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; on(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; addListener(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; addListener(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; prependListener(event: E, listener: GroupEventMap[E], append?: boolean): EventDeliver.Dispose; prependListener(event: S & Exclude, listener: EventDeliver.Listener, append?: boolean): EventDeliver.Dispose; once(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; once(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; addOnceListener(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; addOnceListener(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; prependOnceListener(event: E, listener: GroupEventMap[E], append?: boolean): EventDeliver.Dispose; prependOnceListener(event: S & Exclude, listener: EventDeliver.Listener, append?: boolean): EventDeliver.Dispose; before(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; before(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; after(event: E, listener: GroupEventMap[E], prepend?: boolean): EventDeliver.Dispose; after(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; off(event?: E, listener?: GroupEventMap[E]): boolean; off(event?: S & Exclude, listener?: EventDeliver.Listener): boolean; removeListener(event?: E, listener?: GroupEventMap[E]): boolean; removeListener(event?: S & Exclude, listener?: EventDeliver.Listener): boolean; emit(event: E, ...args: GroupEventMap[E] extends ((...args: infer P) => any) ? P : never[]): void; emit(event: S & Exclude, ...args: Parameters): void; emitSync(event: E, ...args: GroupEventMap[E] extends ((...args: infer P) => any) ? P : never[]): void; emitSync(event: S & Exclude, ...args: Parameters): void; bail(event: E, ...args: GroupEventMap[E] extends ((...args: infer P) => any) ? P : never[]): Promise; bail(event: S & Exclude, ...args: Parameters): Promise; bailSync(event: E, ...args: GroupEventMap[E] extends ((...args: infer P) => any) ? P : never[]): Promise; bailSync(event: S & Exclude, ...args: Parameters): Promise; } export interface Member { before(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; before(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; after(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; after(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; on(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; on(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; addListener(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; addListener(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; prependListener(event: E, listener: MemberEventMap[E], append?: boolean): EventDeliver.Dispose; prependListener(event: S & Exclude, listener: EventDeliver.Listener, append?: boolean): EventDeliver.Dispose; once(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; once(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; addOnceListener(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; addOnceListener(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; prependOnceListener(event: E, listener: MemberEventMap[E], append?: boolean): EventDeliver.Dispose; prependOnceListener(event: S & Exclude, listener: EventDeliver.Listener, append?: boolean): EventDeliver.Dispose; before(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; before(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; after(event: E, listener: MemberEventMap[E], prepend?: boolean): EventDeliver.Dispose; after(event: S & Exclude, listener: EventDeliver.Listener, prepend?: boolean): EventDeliver.Dispose; off(event?: E, listener?: MemberEventMap[E]): boolean; off(event?: S & Exclude, listener?: EventDeliver.Listener): boolean; removeListener(event?: E, listener?: MemberEventMap[E]): boolean; removeListener(event?: S & Exclude, listener?: EventDeliver.Listener): boolean; emit(event: E, ...args: MemberEventMap[E] extends ((...args: infer P) => any) ? P : never[]): void; emit(event: S & Exclude, ...args: Parameters): void; emitSync(event: E, ...args: MemberEventMap[E] extends ((...args: infer P) => any) ? P : never[]): void; emitSync(event: S & Exclude, ...args: Parameters): void; bail(event: E, ...args: MemberEventMap[E] extends ((...args: infer P) => any) ? P : never[]): Promise; bail(event: S & Exclude, ...args: Parameters): Promise; bailSync(event: E, ...args: MemberEventMap[E] extends ((...args: infer P) => any) ? P : never[]): Promise; bailSync(event: S & Exclude, ...args: Parameters): Promise; }