speedybot
Version:
<p align="center"> <a href="https://github.com/valgaze/speedybot"> <img src="https://img.shields.io/npm/v/speedybot.svg" /> </a> <a href="https://github.com/valgaze/speedybot"> <img src="https://img.shields.io/npm/dm/speedybot.svg" /> </a>
121 lines (120 loc) • 4.74 kB
TypeScript
import { CoreMakerequest, ENVELOPES, Message, MessageResponse, RoomConfig, Room_Details, SelfData, SpeedyFile, ToMessage } from "./types";
import { AttachedData, SpeedyError, Webhook } from "./types";
import { AbbreviatedSpeedyCard, HeaderConfig, SpeedyCard } from "./cards";
import { Middleware } from "./types";
export declare class SpeedyBot<S extends string = string> {
private _token;
private makeRequest;
private middlewares;
private topMiddleware;
private fallbackText;
private errorHandler;
constructor(_token?: string, makeRequest?: CoreMakerequest);
private secrets;
addSecret(key: S, value: string | number): void;
addSecrets(payload: {
[key: string]: string | number;
}): void;
getSecret(key: S): string | number | undefined;
API: {
messages: string;
attachments: string;
user: {
self: string;
getPersonDetails: string;
};
rooms: string;
roomDetails: string;
webhooks: string;
};
setToken(token: string): this;
getToken(): string;
setFallbackText(t: string): void;
insertStepToFront(middleware: Middleware): void;
pickRandom<P>(list: P[]): P;
pickRandom<P>(min: number, max: number): number;
pickRandom<P>(listOrMin: P[] | number, max?: number): P | number;
addStep<T = AttachedData>(middleware: Middleware<T>): void;
addStepSequence<T = AttachedData>(middlewares: Middleware<T>[]): void;
regex(reg: RegExp, cb: Middleware): void;
onCamera(cb: Middleware, formats?: string[]): void;
exact(keyword: string, cb: Middleware): void;
contains(keyword: string | string[], cb: Middleware): void;
private onReject;
captureError(func: (e: SpeedyError) => void | unknown): void;
runMiddleware(env: ENVELOPES, startingCtx?: {
[key: string]: string | number;
}): Promise<boolean>;
private resolveDestination;
sendTo(emailOrRoomId: string | {
personId: string;
}, message: Message): Promise<MessageResponse>;
_send(payload: ToMessage): Promise<MessageResponse>;
validateToken(token: string): Promise<boolean>;
card(config?: Partial<AbbreviatedSpeedyCard & {
label: string;
}>): SpeedyCard;
stashCard(secret: string | number, message?: string, unwrapLabel?: string, destroyLabel?: string): SpeedyCard;
errorCard(title: string, message: string): SpeedyCard;
successCard(title: string, message: string): SpeedyCard;
editMessage(roomId: string, messageId: string, message: string): Promise<MessageResponse>;
replyTo(roomIdParam: MessageResponse | string, param2: string | undefined, param3?: string): Promise<MessageResponse>;
private detectType;
deleteMessage(msgId: string): Promise<unknown>;
deleteWebhook(webhookId: string): Promise<void>;
getWebhooks(): Promise<{
items: Webhook[];
}>;
fetchWebhooks(): Promise<{
id: string;
name: string;
resource: string;
targetUrl: string;
}[]>;
Setup(url: string, secret: string): Promise<[Webhook, Webhook]>;
getRecentRooms(limit?: number): Promise<{
type: string;
title: string;
id: string;
}[]>;
createAttachmentActionsWebhook(url: string, secret?: string): Promise<Webhook>;
createFirehose(url: string, secret?: string): Promise<Webhook>;
createWebhook(payload: {
resource: string;
event: string;
targetUrl: string;
name: string;
secret?: string;
}): Promise<Webhook>;
private checkAuthor;
getSelf(token?: string): Promise<SelfData>;
whoAmI(): Promise<SelfData & {
webhooks: Webhook[];
}>;
private buildDetails;
getPerson(personId: string): Promise<SelfData>;
getRoom(roomId: string): Promise<Room_Details>;
private getData;
private generateFileName;
rando(): string;
private handleExtension;
sendFileTo(destination: string | {
personId: string;
}, data: any, extensionOrFileName: string, textLabel?: string, contentType?: string | null): Promise<MessageResponse>;
getFile(url: string, opts?: {
responseType?: "arraybuffer" | "json";
}): Promise<SpeedyFile & {
data: unknown;
}>;
private extractFiledata;
peekFile(url: string): Promise<Omit<SpeedyFile, "data">>;
private guessContentType;
fuzzyMatch(candidate: string, options: string[]): boolean;
convertToHash(arr: string[]): {
[key: string]: string;
};
appCard(appName: string, logoUrl: string, config?: Omit<HeaderConfig, "iconURL">): SpeedyCard;
private fetchData;
private buildQueryURL;
getAllRooms(options?: Partial<RoomConfig>): Promise<Room_Details[]>;
}