UNPKG

@nguyennhuy/zalo-api

Version:

Unofficial Zalo API for JavaScript

77 lines (76 loc) 2.37 kB
import EventEmitter from "events"; import { type GroupEvent } from "../models/GroupEvent.js"; import { type FriendEvent } from "../models/FriendEvent.js"; import { Message, Reaction, Undo, ThreadType, Typing } from "../models/index.js"; import type { ContextSession } from "../context.js"; import { type SeenMessage } from "../models/SeenMessage.js"; import { type DeliveredMessage } from "../models/DeliveredMessage.js"; type UploadEventData = { fileUrl: string; fileId: string; }; export type WsPayload<T = Record<string, unknown>> = { version: number; cmd: number; subCmd: number; data: T; }; export type OnMessageCallback = (message: Message) => any; export declare enum CloseReason { ManualClosure = 1000, DuplicateConnection = 3000, KickConnection = 3003 } interface ListenerEvents { connected: []; closed: [reason: CloseReason]; error: [error: any]; typing: [typing: Typing]; message: [message: Message]; old_messages: [messages: Message[]]; seen_messages: [messages: SeenMessage[]]; delivered_messages: [messages: DeliveredMessage[]]; reaction: [reaction: Reaction]; old_reactions: [reactions: Reaction[]]; upload_attachment: [data: UploadEventData]; undo: [data: Undo]; friend_event: [data: FriendEvent]; group_event: [data: GroupEvent]; cipher_key: [key: string]; } export declare class Listener extends EventEmitter<ListenerEvents> { private ctx; private url; private cookie; private userAgent; private ws; private onConnectedCallback; private onClosedCallback; private onErrorCallback; private onMessageCallback; private cipherKey?; private selfListen; private pingInterval?; private id; constructor(ctx: ContextSession, url: string); onConnected(cb: Function): void; onClosed(cb: Function): void; onError(cb: Function): void; onMessage(cb: OnMessageCallback): void; start(): void; stop(): void; sendWs(payload: WsPayload, requireId?: boolean): void; /** * Request old messages * * @param lastMsgId */ requestOldMessages(threadType: ThreadType, lastMsgId?: string | null): void; /** * Request old messages * * @param lastMsgId */ requestOldReactions(threadType: ThreadType, lastMsgId?: string | null): void; } export {};