bottender
Version:
A framework for building conversational user interfaces.
44 lines • 1.89 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import Context from '../context/Context';
import SessionStore from '../session/SessionStore';
import { Action, Client, Plugin, RequestContext } from '../types';
import { Event } from '../context/Event';
import { Connector } from './Connector';
declare type Builder<C extends Context> = {
build: () => Action<C, any>;
};
export declare function run<C extends Context>(action: Action<C, any>): Action<C, any>;
declare type RequestHandler<B> = (body: B, requestContext?: RequestContext) => void | Promise<void>;
export declare type OnRequest = (body: JsonObject, requestContext?: RequestContext) => void;
export default class Bot<B extends JsonObject, C extends Client, E extends Event, Ctx extends Context<C, E>> {
_sessions: SessionStore;
_initialized: boolean;
_connector: Connector<B, C>;
_handler: Action<Ctx, any> | null;
_errorHandler: Action<Ctx, any> | null;
_initialState: JsonObject;
_plugins: Function[];
_sync: boolean;
_emitter: EventEmitter;
_onRequest: OnRequest | undefined;
constructor({ connector, sessionStore, sync, onRequest, }: {
connector: Connector<B, C>;
sessionStore?: SessionStore;
sync?: boolean;
onRequest?: OnRequest;
});
get connector(): Connector<B, C>;
get sessions(): SessionStore;
get handler(): Action<Ctx, any> | null;
get emitter(): EventEmitter;
onEvent(handler: Action<Ctx, any> | Builder<Ctx>): Bot<B, C, E, Ctx>;
onError(handler: Action<Ctx, any> | Builder<Ctx>): Bot<B, C, E, Ctx>;
setInitialState(initialState: JsonObject): Bot<B, C, E, Ctx>;
use(plugin: Plugin<Ctx>): Bot<B, C, E, Ctx>;
initSessionStore(): Promise<void>;
createRequestHandler(): RequestHandler<B>;
}
export {};
//# sourceMappingURL=Bot.d.ts.map