Premiers pas
Dans cet article, vous découvrirez les bases de necord et comment il s'intègre avec NestJS !
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
- Yarn
- pnpm
- Bun
npm install necord discord.js
yarn add necord discord.js
pnpm add necord discord.js
bun add necord discord.js
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.
Vous ne savez pas ce que sont les modules ? Rattrapez votre retard en les découvrant dans 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 {}
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é | Type | Description |
|---|---|---|
token | string | Votre token Discord |
prefix | string ou (message: Message) => string | Le préfixe de votre bot |
development | Snowflake[] ou false | Les serveurs de développement de votre bot |
skipRegistration | boolean | Ignorer l'enregistrement automatique des commandes d'application |
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.
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!' });
}
}
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
- Yarn
- pnpm
- Bun
$ npm run start
$ yarn run start
$ pnpm run start
$ bun run start
Vous pouvez consulter un exemple fonctionnel ici.