amesu
Version:
Node.js SDK for QQ Bot.
89 lines (88 loc) • 2.92 kB
TypeScript
/// <reference types="node" />
import type { Token } from '../bot/token';
import { EventEmitter } from 'node:events';
import { ClientConfig } from '../bot/client';
/** 事件类型 */
declare enum Intent {
GUILDS = 1,
GUILD_MEMBERS = 2,
GUILD_MESSAGES = 512,
GUILD_MESSAGE_REACTIONS = 1024,
DIRECT_MESSAGE = 4096,
GROUP_AND_C2C_EVENT = 33554432,
INTERACTION = 67108864,
MESSAGE_AUDIT = 134217728,
FORUMS_EVENT = 268435456,
AUDIO_ACTION = 536870912,
PUBLIC_GUILD_MESSAGES = 1073741824
}
export interface ReadyData {
version: number;
session_id: string;
user: {
id: string;
username: string;
bot: boolean;
status: number;
};
shard: number[];
}
export type ResumedData = '';
export type IntentEvent = keyof typeof Intent;
export interface DispatchData {
t: string;
d: any;
}
interface SessionEvent {
dispatch: (data: DispatchData) => void;
}
export interface Session extends EventEmitter {
addListener<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
on<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
once<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
removeListener<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
off<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
removeAllListeners<T extends keyof SessionEvent>(event?: T): this;
listeners<T extends keyof SessionEvent>(event: T): Function[];
rawListeners<T extends keyof SessionEvent>(event: T): Function[];
emit<T extends keyof SessionEvent>(event: T, ...args: Parameters<SessionEvent[T]>): boolean;
listenerCount<T extends keyof SessionEvent>(event: T, listener?: SessionEvent[T]): number;
prependListener<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
prependOnceListener<T extends keyof SessionEvent>(event: T, listener: SessionEvent[T]): this;
eventNames<T extends keyof SessionEvent>(): T[];
}
export declare class Session extends EventEmitter {
private config;
private token;
private ackTimeout;
/** 心跳间隔 */
private heartbeat_interval;
/** 是否重连 */
private is_reconnect;
/** 记录器 */
private logger;
/** 重连计数 */
private retry;
/** 最大重连数 */
private max_retry;
/** 消息序列号 */
private seq;
/** 会话 id */
private session_id;
private ws;
constructor(config: ClientConfig, token: Token);
private onOpen;
private onClose;
private onError;
private onMessage;
private onDispatch;
private heartbeat;
private sendPayload;
private getIntents;
private sendAuthPayload;
private sendResumePayload;
private reconnect;
connect(url: string): void;
disconnect(): void;
}
export {};