Module for handling commands from Slack.
import { Module } from '@nestjs/common';
import { SlackBotModule } from '@sikora00/nestjs-slack-bot';
import { HelloSlackCommand } from './hello.slack-command';
@Module({
imports: [SlackBotModule.forRoot({ slackToken: 'yourSlackBotToken' })],
providers: [HelloSlackCommand],
})
export class AppModule {}
Create injectable Nestjs's service with @SlackCommandHandler decorator
import { Injectable } from '@nestjs/common';
import {
SlackCommand,
SlackCommandHandler,
SlackMessage,
SlackService,
} from '@sikora00/nestjs-slack-bot';
@SlackCommandHandler()
@Injectable()
export class HelloSlackCommand implements SlackCommand {
description: string = 'say hello to the Slack Bot';
type: string = 'hello';
constructor(private slack: SlackService) {}
async handler(command: string[], message: SlackMessage): Promise<void> {
return 'Hello! I am SlackBot';
}
}
Then send a massage with the first word hello
in any channel where the bot is invited.
Nestjs Slack Bot package has build in help
command handler. It displays list of all registered commands in format type: description
received from SlackCommandHandler class definitions.
To handle or modify incoming or response messages use SlackInterceptor.
@SlackInterceptor()
@Injectable()
export class HelloInterceptor implements ISlackInterceptor {
intercept(
message: SlackMessage,
next: CallHandler<any>
): Observable<any> | Promise<Observable<any>> {
return next.handle().pipe(
map((res) => {
if (res) {
return `Hello Maciej\n${res}`;
}
})
);
}
}