import { Client } from "../client"; import { MessageElem, Quotable, Sendable } from "./elements"; import { GroupMessageEvent, MessageRet, PrivateMessageEvent } from "../event"; import { Gender, GroupRole } from "../common"; export declare abstract class Message { c: Client; post_type: "message"; message_id: string; constructor(c: Client, $json: Record); static from(this: Client, type: T, message: Record): MessageEventMap[T]; toJSON(): { [k: string]: string | number | Client | (() => any) | MessageElem[] | { [k: string]: any; } | Quotable | ((message: Sendable, quote?: boolean) => Promise); }; } export declare class PrivateMessage extends Message { message_type: "private"; /** friend:好友 group:群临时会话 self:我的设备 other:其他途径的临时会话 */ sub_type: "group" | "friend" | "other" | "self"; sender: { user_id: number; nickname: string; group_id: number; discuss_id: number; }; constructor(c: Client, message: Record); } export declare class GroupMessage extends Message { message_type: "group"; sender: { user_id: number; nickname: string; card: string; sex: Gender; age: number; area: string; level: number; role: GroupRole; title: string; }; constructor(c: Client, message: Record); } export interface Message { message_type: 'discuss' | 'group' | 'private'; user_id: number; /** 消息时间 */ time: number; /** 消息元素数组 */ message: MessageElem[]; /** 字符串形式的消息 */ raw_message: string; font: string; /** 消息编号,在群消息中是唯一的 (私聊消息建议至少使用time,seq,rand中的两个判断唯一性) */ seq: number; /** 消息随机数 */ rand: number; sender?: { [k: string]: any; }; /** 引用回复 */ source?: Quotable; pktnum: number; index: number; div: number; cqCode: string; reply(message: Sendable, quote?: boolean): Promise; } export interface PrivateMessage { from_id: number; to_id: number; auto_reply: boolean; } export interface GroupMessage { sub_type: "normal" | "anonymous"; group_id: number; group_name: string; anonymous: Anonymous | null; block: boolean; atme: boolean; atall: boolean; } interface MessageEventMap { group: GroupMessageEvent; private: PrivateMessageEvent; } export interface Anonymous { /** 是否可以匿名发言 */ enable: boolean; flag: string; id: number; id2: number; name: string; expire_time: number; color: string; } export {};