necordjs / necord

🤖 A module for creating Discord bots using NestJS, based on Discord.js
https://necord.org
MIT License
355 stars 14 forks source link
bot bot-framework discord discord-bot discord-bot-api discordjs javascript nest nestjs nodejs typescript

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 is the most powerful library for creating bots and Nest.js 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

For questions and support, please use the Issues.

Installation

Node.js 18.0.0 or newer is required.

$ 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:

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:

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:

Backers

Stay in touch

License

MIT © Alexey Filippov