Ir para o conteúdo principal

Primeiros passos

Neste artigo, você aprenderá sobre o básico de necord, e como ele se integra ao NestJS!

tip

Muitos dos conceitos vistos com necord são projetados para serem usados como outros componentes em um projeto NestJS. Nós recomendamos que você esteja familiarizado com a documentação do NestJS, especialmente sua seção overview, antes de começar.

O primeiro passo é instalar o necord e sua dependência, Discord.js

npm install necord discord.js
tip

Você precisa instalar Node.js v18.0.0 ou mais recente para usar o Necord e o Discord.js.

Configuração do módulo

Necord é um módulo como qualquer outro, e pode ser importado como tal dentro da sua aplicação Nest.

Módulos do NestJS

Não tem certeza de que são módulos? Leia sobre eles no NestJS!

discord.module.ts
import { Module } from '@nestjs/common';
import { AppService } from './app.service';
import { IntentsBitField } from 'discord.js';

@Module({
imports: [
NecordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [IntentsBitField.Flags.Guilds],
development: [process.env.DISCORD_DEVELOPMENT_GUILD_ID]
})
],
providers: [AppService]
})
export class DiscordModule {}
info

Certifique-se de configurar os intents exigidos pela sua aplicação!

Os argumentos do módulo são uma extensão do ClientOptions do discord.js, além de 3 opções do necord: token, prefix e development.

export interface NecordModuleOptions extends DiscordClientOptions {
token: string;
prefix?: string | (message: Message) => string | Promise<string>;
development?: Snowflake[] | false;
skipRegistration?: boolean;
}
PropriedadeTipoDescrição
tokenstringSeu token do Discord
prefixstring ou (message: Message) => stringO prefixo de seu bot
developmentSnowflake[] ou falseOs servidores de desenvolvimento do seu bot
skipRegistrationbooleanPula automaticamente o registro de comandos da aplicação
Aviso

Se você tem, comandos usando a propriedade guilds, o argumento global de desenvolvimento não vai sobrepor isso.

Slash Commands

O melhor jeito de interagir com seus usuários é usando Slash Commands! Slash commands permitem criar comandos com argumentos precisos e escolhas, dando aos usuários a melhor experiência.

Para criar um comando com Necord, você pode usar o decorador SlashCommand.

app.service.ts
import { Injectable } from '@nestjs/common';
import { Context, SlashCommand, SlashCommandContext } from 'necord';

@Injectable()
export class AppService {
@SlashCommand({
name: 'ping',
description: 'Ping command!'
})
public async onPing(@Context() [interaction]: SlashCommandContext) {
return interaction.reply({ content: 'Pong!' });
}
}
tip

Quando o cliente fizer o login, ele automaticamente registrará todos os comandos. Comandos globais são armazenados em cache por até uma hora, portanto, para evitar o cache de comandos globais, você deve usar o argumento do desenvolvimento no módulo Necord. Isto irá restringir o comando para um único servidor, impedindo-o de ser pego pelo cache.

Executando a aplicação

Você pode executar o seguinte comando no seu prompt de comando do SO para iniciar a aplicação que escuta eventos da API do Discord:

$ npm run start

Você pode ver um exemplo funcional aqui.