Skip to main content

Premiers pas

Dans cet article, vous découvrirez les bases de necord et comment il s'intègre avec NestJS !

astuce

De nombreux concepts présents dans necord sont conçus pour être utilisés comme les autres composants d'un projet NestJS. Nous vous recommandons de vous familiariser avec la documentation NestJS, en particulier sa section vue d'ensemble, avant de commencer.

La toute première étape consiste à installer necord et sa dépendance, Discord.js

npm install necord discord.js
astuce

Vous devez installer Node.js v18.0.0 ou une version plus récente pour utiliser Necord et Discord.js.

Configuration du module

Necord est un module comme les autres et peut être importé en tant que tel dans votre application Nest.

Modules NestJS

Vous ne savez pas ce que sont les modules ? Rattrapez votre retard en les découvrant dans 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

Assurez-vous de configurer correctement les intents requis par votre application !

Les arguments du module sont une extension des ClientOptions de discord.js, en plus de 3 options necord : token, prefix et development.

export interface NecordModuleOptions extends DiscordClientOptions {
token: string;
prefix?: string | (message: Message) => string | Promise<string>;
development?: Snowflake[] | false;
skipRegistration?: boolean;
}
PropriétéTypeDescription
tokenstringVotre token Discord
prefixstring ou (message: Message) => stringLe préfixe de votre bot
developmentSnowflake[] ou falseLes serveurs de développement de votre bot
skipRegistrationbooleanIgnorer l'enregistrement automatique des commandes d'application
Avertissement

Si vous avez des commandes utilisant la propriété guilds, l'argument global development ne l'écrasera pas.

Commandes slash

La meilleure façon d'interagir avec vos utilisateurs est d'utiliser les commandes slash ! Les commandes slash vous permettent de créer des commandes avec des arguments et des choix précis, offrant ainsi la meilleure expérience aux utilisateurs.

Pour créer une commande avec Necord, vous pouvez utiliser le décorateur 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!' });
}
}
astuce

Lorsque le client se connecte, il enregistre automatiquement toutes les commandes. Les commandes globales sont mises en cache pendant une heure maximum ; par conséquent, pour éviter le cache des commandes globales, vous devriez utiliser l'argument development sur le module Necord. Cela limitera la commande à un seul serveur, l'empêchant d'être affectée par le cache.

Lancer l'application

Vous pouvez exécuter la commande suivante dans l'invite de commande de votre système d'exploitation pour démarrer l'application à l'écoute des événements de l'API Discord :

$ npm run start

Vous pouvez consulter un exemple fonctionnel ici.