/** * Wechaty - Wechat for Bot. Connecting ChatBots * * Interface for Puppet * * Class Puppet * * Licenst: ISC * https://github.com/wechaty/wechaty * */ import { EventEmitter } from 'events' import { Sayable } from './config' import { Contact } from './contact' import { Message } from './message' import { StateMonitor } from './state-monitor' import { Room } from './room' // type ContactGetterFunc = { // (id: string): Promise // } export abstract class Puppet extends EventEmitter implements Sayable { public userId: string | null public user: Contact | null public abstract getContact(id: string): Promise public state = new StateMonitor<'live', 'dead'>('Puppet', 'dead') constructor() { super() } public abstract async init(): Promise /** * @deprecated * use Message.self() instead */ public abstract self(message?: Message): boolean // public user(contact?: Contact) { // if (contact) { // this._user = contact // } // return this._user // } public abstract send(message: Message): Promise public abstract say(content: string): Promise // @deprecated public abstract reply(message: Message, reply): Promise public abstract reset(reason?: string): void public abstract logout(): Promise public abstract quit(): Promise public abstract ding(): Promise /** * FriendRequest */ public abstract friendRequestSend(contact: Contact, hello?: string): Promise public abstract friendRequestAccept(contact: Contact, ticket: string): Promise /** * Room */ public abstract roomAdd(room: Room, contact: Contact): Promise public abstract roomDel(room: Room, contact: Contact): Promise public abstract roomTopic(room: Room, topic: string): Promise public abstract roomCreate(contactList: Contact[], topic?: string): Promise public abstract roomFind(filterFunc: string): Promise /** * Contact */ public abstract contactFind(filterFunc: string): Promise public abstract contactRemark(contact: Contact, remark: string): Promise }