Primeiros passos
Neste artigo, você aprenderá sobre o básico de necord, e como ele se integra ao NestJS!
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
- Yarn
- pnpm
npm install necord discord.js
yarn add necord discord.js
pnpm add necord discord.js
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.
Não tem certeza de que são módulos? Leia sobre eles no NestJS!
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 {}
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;
}
Propriedade | Tipo | Descrição |
---|---|---|
token | string | Seu token do Discord |
prefix | string ou (message: Message) => string | O prefixo de seu bot |
development | Snowflake[] ou false | Os servidores de desenvolvimento do seu bot |
skipRegistration | boolean | Pula automaticamente o registro de comandos da aplicação |
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
.
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!' });
}
}
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
- Yarn
- pnpm
$ npm run start
$ yarn run start
$ pnpm run start
Você pode ver um exemplo funcional aqui.