Skip to content

Latest commit

 

History

History

nestjs-slack-bot

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

@sikora00/nestjs-slack-bot

build version downloads license

Module for handling commands from Slack.

Usage

Create your slack bot

Slack Apps

Import module

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 {}

Define Slack Command Handler

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.

Docs

Help command

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.

Interceptors

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}`;
        }
      })
    );
  }
}

Authors