@urban-bot/slack
Version:
Create Slack chatbot with urban-bot
39 lines (38 loc) • 1.72 kB
TypeScript
import { createEventAdapter } from '@slack/events-api';
import { createMessageAdapter } from '@slack/interactive-messages';
import { WebClient } from '@slack/web-api';
import express from 'express';
import { UrbanBot, UrbanMessage, UrbanExistingMessage, UrbanSyntheticEvent, UrbanParseMode } from '@urban-bot/core';
import { SlackActionContext, SlackMessageContext, SlackPayload, SlackMessageMeta, SLACK } from './types';
export declare type SlackOptions = {
signingSecret: string;
token: string;
pathnamePrefix?: string;
};
export declare type UrbanNativeEventSlack<Payload extends SlackPayload = SlackPayload> = {
type: SLACK;
payload?: Payload;
};
export declare type UrbanBotSlackType = {
NativeEvent: UrbanNativeEventSlack;
MessageMeta: SlackMessageMeta;
};
export declare class UrbanBotSlack implements UrbanBot<UrbanBotSlackType> {
options: SlackOptions;
static TYPE: "SLACK";
type: "SLACK";
defaultParseMode: UrbanParseMode;
client: WebClient;
events: ReturnType<typeof createEventAdapter>;
interactions: ReturnType<typeof createMessageAdapter>;
commandPrefix: string;
constructor(options: SlackOptions);
initializeServer(expressApp: express.Express): void;
processUpdate(_event: UrbanSyntheticEvent<UrbanBotSlackType>): void;
handleAction: (ctx: SlackActionContext) => void;
handleMessage: (ctx: SlackMessageContext) => void;
handleCommand: (req: express.Request, res: express.Response) => void;
sendMessage(message: UrbanMessage): Promise<SlackMessageMeta>;
updateMessage(message: UrbanExistingMessage<UrbanBotSlackType>): Promise<void>;
deleteMessage(message: UrbanExistingMessage<UrbanBotSlackType>): void;
}