Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/necordjs/necord

🤖 A module for creating Discord bots using NestJS, based on Discord.js
https://github.com/necordjs/necord

bot bot-framework discord discord-bot discord-bot-api discordjs javascript nest nestjs nodejs typescript

Last synced: about 14 hours ago
JSON representation

🤖 A module for creating Discord bots using NestJS, based on Discord.js

Awesome Lists containing this project

README

        



Necord Logo


🤖 A module for creating Discord bots using NestJS, based on Discord.js



Documentation ✨Source code 🪡Examples 🛠️Community 💬



NPM Version
NPM License
NPM Downloads
Last commit

## About

This package uses the best of the Node.js world under the hood.
[Discord.js](https://github.com/discordjs/discord.js) is the most powerful
library for creating bots and [Nest.js](https://github.com/nestjs) is a progressive framework for creating well-architectured applications.
This module provides a fast and easy way of creating Discord bots and deep integration with your NestJS application.

**Features**

- Simple. Flexible. Easy to use.
- Ability to create custom decorators.
- Interact with Discord (Slash Commands, Context Menus, Message Components, Listeners).
- Full support of NestJS guards, interceptors, filters and pipes!

For questions and support, please use
the [Issues](https://github.com/necordjs/necord/issues/new?assignees=&labels=question&template=question.yml).

## Installation

**Node.js 18.0.0 or newer is required.**

```bash
$ npm i necord discord.js
$ yarn add necord discord.js
$ pnpm add necord discord.js
```

## Usage

Once the installation process is complete, we can import the `NecordModule` into the root `AppModule`:

```typescript
import { NecordModule } from 'necord';
import { Module } from '@nestjs/common';
import { AppUpdate } from './app.update';

@Module({
imports: [
NecordModule.forRoot({
token: 'DISCORD_BOT_TOKEN',
intents: ['Guilds', 'GuildMessages', 'DirectMessages']
})
],
providers: [AppUpdate]
})
export class AppModule {
}
```

Then create `app.update.ts` file and add `On`/`Once` decorators for handling Discord API events:

```typescript
import { Injectable, Logger } from '@nestjs/common';
import { Context, On, Once, ContextOf } from 'necord';
import { Client } from 'discord.js';

@Injectable()
export class AppUpdate {
private readonly logger = new Logger(AppUpdate.name);

public constructor(private readonly client: Client) {
}

@Once('ready')
public onReady(@Context() [client]: ContextOf<'ready'>) {
this.logger.log(`Bot logged in as ${client.user.username}`);
}

@On('warn')
public onWarn(@Context() [message]: ContextOf<'warn'>) {
this.logger.warn(message);
}
}
```

Whenever you need to handle any event data, use the `Context` decorator.

If you want to fully dive into Necord, check out these resources:

* [Necord Wiki](https://necord.org) - Official documentation of Necord.
* [Nest JS](https://docs.nestjs.com) - A progressive framework for creating well-architectured applications.
* [Discord JS](https://discord.js.org) - The most powerful library for creating bots.
* [Discord API](https://discord.com/developers/docs) - Official documentation of Discord API.

## Backers

## Stay in touch

* Author - [Alexey Filippov](https://t.me/socketsomeone)
* Twitter - [@SocketSomeone](https://twitter.com/SocketSomeone)

## License

[MIT](https://github.com/necordjs/necord/blob/master/LICENSE) © [Alexey Filippov](https://github.com/SocketSomeone)