xmppjs-chat-bot
Version:
Server-side XMPP chat bot
46 lines (45 loc) • 2.85 kB
TypeScript
/// <reference types="xmpp__jid" />
/// <reference types="node" />
import type { Bot } from './bot';
import { Logger } from './logger';
import type { Stanza, MessageStanza, PresenceStanza } from './stanza';
import type { Reference } from './reference';
import type { Handler } from './handlers/abstract';
import EventEmitter from 'events';
import { JID } from '@xmpp/jid';
import { RoomUser } from './user';
declare interface Room {
on: (((event: 'room_joined', listener: (user: RoomUser) => void) => this) & ((event: 'room_parted', listener: (user: RoomUser) => void) => this) & ((event: 'room_nick_changed', listener: (user: RoomUser, previousJID: JID) => void) => this) & ((event: 'room_roster_initialized', listener: (OnlineUsers: RoomUser[]) => void) => this) & ((event: 'room_message', listener: (stanza: MessageStanza, fromUser: RoomUser) => void) => this) & ((event: 'room_mentionned', listener: (stanza: MessageStanza, fromUser: RoomUser) => void) => this) & ((event: 'room_command', listener: (command: string, parameters: string[], stanza: MessageStanza, fromUser: RoomUser) => void) => this));
emit: (((event: 'room_joined', user: RoomUser) => boolean) & ((event: 'room_parted', user: RoomUser) => boolean) & ((event: 'room_nick_changed', user: RoomUser, previousJID: JID) => boolean) & ((event: 'room_roster_initialized', onlineUsers: RoomUser[]) => boolean) & ((event: 'room_message', stanza: MessageStanza, fromUser: RoomUser) => boolean) & ((event: 'room_mentionned', stanza: MessageStanza, fromUser: RoomUser) => boolean) & ((event: 'room_command', command: string, parameters: string[], stanza: MessageStanza, fromUser: RoomUser) => boolean));
}
declare class Room extends EventEmitter {
protected readonly bot: Bot;
protected readonly roomJID: JID;
protected state: 'offline' | 'online';
protected userJID: JID | undefined;
protected readonly roster: Map<string, RoomUser>;
readonly logger: Logger;
protected readonly handlers: {
[id: string]: Handler;
};
constructor(bot: Bot, roomJID: JID);
reset(): void;
isOnline(): boolean;
onlineUserCount(): number;
getOnlineUsers(): RoomUser[];
get myNick(): string | undefined;
get jid(): JID;
join(nick: string): Promise<void>;
part(): Promise<void>;
changeNickname(nick: string): Promise<void>;
sendGroupchat(msg: string, references?: Reference[]): Promise<void>;
moderateMessage(stanza: MessageStanza, reason?: string): Promise<void>;
receiveStanza(stanza: Stanza): void;
receivePresenceStanza(stanza: PresenceStanza): void;
protected receiveMessageStanza(stanza: MessageStanza): void;
attachHandler(handler: Handler): void;
detachHandlers(): void;
getHandlerById(id: string): Handler | null;
detachHandlerById(id: string): void;
}
export { Room, RoomUser };