https://github.com/bjerkio/nestjs-slack
Lightweight library to use Slack in NestJS applications.
https://github.com/bjerkio/nestjs-slack
nest nestjs slack slack-api slack-webhook typescript
Last synced: 29 days ago
JSON representation
Lightweight library to use Slack in NestJS applications.
- Host: GitHub
- URL: https://github.com/bjerkio/nestjs-slack
- Owner: bjerkio
- License: apache-2.0
- Created: 2021-08-07T17:03:19.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-16T13:45:04.000Z (4 months ago)
- Last Synced: 2025-03-28T10:04:18.974Z (about 1 month ago)
- Topics: nest, nestjs, slack, slack-api, slack-webhook, typescript
- Language: TypeScript
- Homepage:
- Size: 276 KB
- Stars: 52
- Watchers: 3
- Forks: 20
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
nestjs-slack
Lightweight library to use Slack in NestJS applications.
Quick Start Guide
·
Request Feature
·
Report Bug
---
[](https://github.com/prettier/prettier)
[](http://commitizen.github.io/cz-cli/)
[](https://lgtm.com/projects/g/bjerkio/nestjs-slack/context:javascript)
[](https://codecov.io/gh/bjerkio/nestjs-slack)
[](https://codeclimate.com/github/bjerkio/nestjs-slack/maintainability)**NestjS Slack** helps you sending Slack messages in your [NestJS] application.
Combined with `slack-block-builder` you can easily create maintainable, testable
and reusable Slack code declaratively and ready for production.[nestjs]: https://github.com/nestjs/nest
This documentation is for v2 of this library. If you are looking for v1
documentation, please check the [v1] branch.[v1]: https://github.com/bjerkio/nestjs-slack/tree/v1
### :zap: Features
- Used in many production workloads.
- Building blocks with [slack-block-builder].
- Supports sending messages directly to Slack Web API.
- Supports Slack webhooks.
- Supports Google Logging.[slack-block-builder]: https://github.com/raycharius/slack-block-builder
### :space_invader: Usage
```shell
▶ yarn add nestjs-slack
``````typescript
import { Module } from '@nestjs/common';
import { SlackModule } from 'nestjs-slack';@Module({
imports: [
SlackModule.forRoot({
type: 'api',
token: '',
}),
],
})
export class AppModule {}
```To use `webhook` type, you'll typically use these settings:
```typescript
SlackModule.forRoot({
type: 'webhook',
url: '',
}),
```You can also add multiple webhooks, like this:
```typescript
SlackModule.forRoot({
type: 'webhook',
channels: [
{
name: 'dev',
url: '',
},
{
name: 'customers',
url: '',
},
],
}),
```You can also get type assertions if you add a Typescript definition like this:
```typescript
declare module 'nestjs-slack' {
type Channels = 'dev' | 'customers';
}
```### Example
You can easily inject `SlackService` to be used in your services, controllers,
etc.```typescript
import { Injectable } from '@nestjs/common';
import { SlackService } from 'nestjs-slack';@Injectable()
export class AuthService {
constructor(private service: SlackService) {}helloWorldMethod() {
this.service.sendText('Hello world was sent!');
return 'hello world';
}
}
```The underlying Slack `WebClient` is also available to use on the `SlackService`:
```typescript
import { Injectable } from '@nestjs/common';
import { SlackService } from 'nestjs-slack';@Injectable()
export class AuthService {
constructor(private service: SlackService) {}otherSlackWebClientMethod(email) {
return await this.service.client.users.lookupByEmail(email);
}
}
```### Use with Google Logging
```shell
▶ yarn add @google-cloud/logging
``````typescript
import { SlackModule } from 'nestjs-slack';@Module({
imports: [SlackModule.forRoot({ type: 'google' })],
})
export class AppModule {}
```When `type` is set to `google` the `@google-cloud/logging` package will be used
to send logs to stdout [according to structured logs][structured-logs].You can deploy [gcl-slack] to consume logs from this library.
[structured-logs]: https://cloud.google.com/logging/docs/structured-logging
[gcl-slack]: https://github.com/bjerkio/gcl-slack## Contribute & Disclaimer
We love to get help 🙏 Read more about how to get started in
[CONTRIBUTING](CONTRIBUTING.md) 🌳