Comment créer un bot musical en utilisant Discord.js

Photo de Derek Truninger sur Unsplash

L'API discord vous fournit un outil simple pour créer et utiliser vos propres robots et outils. Aujourd'hui, nous allons voir comment créer un bot musical de base et l'ajouter à notre serveur. Le bot pourra jouer, ignorer et arrêter la musique et prendra également en charge la fonctionnalité de mise en file d'attente.

Mettre en place un bot discord

Premièrement, nous devons créer une nouvelle application sur le portail de développement discord.

Nous pouvons le faire en visitant le portail et en cliquant sur une nouvelle application.

Après cela, nous devons donner un nom à notre application et cliquer sur le bouton Créer.

Après cela, nous devons sélectionner l'onglet bot et cliquer sur ajouter un bot.

Maintenant, notre bot est créé et nous pouvons continuer à l'inviter sur notre serveur.

Ajouter le bot sur votre serveur

Après avoir créé notre bot, nous pouvons l'inviter à l'aide du générateur d'URL OAuth2.

Pour cela, nous devons naviguer vers la page OAuth2 et sélectionner bot dans la portée de l'écran tactile.

Après cela, nous devons sélectionner les autorisations nécessaires pour lire de la musique et lire des messages.

Ensuite, nous pouvons copier notre URL générée et la coller dans notre navigateur.

Après l'avoir collé, nous l'ajoutons à notre serveur en sélectionnant le serveur et en cliquant sur le bouton autoriser.

Créer notre projet

Maintenant, nous pouvons commencer à créer notre projet en utilisant notre terminal.

Tout d'abord, nous créons un répertoire et nous y entrons. Nous pouvons le faire en utilisant ces deux commandes.

mkdir musicbot && cd musicbot

Après cela, nous pouvons créer nos modules de projet à l’aide de la commande npm init. Après avoir entré la commande, il vous sera posé quelques questions, répondez-y et continuez.

Ensuite, nous devons simplement créer les deux fichiers dans lesquels nous allons travailler.

touch index.js && touch config.json

Nous devons maintenant ouvrir notre projet dans notre éditeur de texte. Personnellement, j'utilise VS Code et je peux l'ouvrir avec la commande suivante.

code.

Discord js basics

Maintenant, nous avons juste besoin d’installer des dépendances avant de pouvoir commencer.

npm install discord.js ffmpeg-binaries opusscript ytdl-core --save

Une fois l'installation terminée, nous pouvons continuer à écrire notre fichier config.json. Ici, nous sauvegardons le jeton de notre bot et le préfixe qu’il devrait écouter.

Pour obtenir votre jeton, vous devez visiter à nouveau le portail des développeurs discord et le copier à partir de la section bot.

Ce sont les seules choses que nous devons faire dans notre fichier config.json. Commençons donc à écrire notre code javascript.

Premièrement, nous devons importer toutes nos dépendances.

Après cela, nous pouvons créer notre client et nous connecter en utilisant notre jeton.

Ajoutons maintenant des écouteurs de base qui console.log lorsqu’ils sont exécutés.

Après cela, nous pouvons démarrer notre bot en utilisant la commande node et il devrait être en ligne sur discord et imprimer «Ready!» Dans la console.

noeud index.js

Lire des messages

Maintenant que notre bot est sur notre serveur et peut aller en ligne, nous pouvons commencer à lire les messages de discussion et à y répondre.

Pour lire des messages, il suffit d’écrire une fonction simple.

Ici, nous créons un écouteur pour l'événement de message et récupérons le message et l'enregistrons dans un objet de message s'il est déclenché.

Maintenant, nous devons vérifier si le message provient de notre propre bot et l'ignorer si c'est le cas.

if (message.author.bot) retourne;

Dans cette ligne, nous vérifions si l'auteur du message est notre bot et retournons-le si c'est le cas.

Ensuite, nous vérifions si le message commence par le préfixe que nous avons défini précédemment et le renvoie si ce n’est pas le cas.

if (! message.content.startsWith (prefix)) return;

Après cela, nous pouvons vérifier quelle commande nous devons exécuter. Nous pouvons le faire en utilisant des déclarations simples si.

Dans ce bloc de code, nous vérifions quelle commande à exécuter et appelons la commande. Si la commande d'entrée n'est pas valide, nous écrivons un message d'erreur dans le chat en utilisant la fonction send ().

Maintenant que nous savons quelle commande nous devons exécuter, nous pouvons commencer à implémenter ces commandes.

Ajout de chansons

Commençons par ajouter la commande play. Pour cela, nous avons besoin d’une chanson et d’une guilde (une guilde représente un ensemble isolé d’utilisateurs et de canaux et est souvent appelée serveur). Nous avons également besoin de la bibliothèque ytdl que nous avons installée plus tôt.

Tout d'abord, nous devons créer une carte avec le nom de la file d'attente dans laquelle nous sauvegardons toutes les chansons que nous tapons dans le chat.

file d'attente const = new Map ();

Après cela, nous créons une fonction asynchrone appelée Exécuter et vérifions si l’utilisateur participe à un chat vocal et si le bot dispose des droits appropriés. Sinon, nous écrivons un message d'erreur et retournons.

Nous pouvons maintenant continuer à obtenir les informations sur la chanson et à les enregistrer dans un objet de chanson. Pour cela, nous utilisons notre bibliothèque ytdl qui récupère les informations de la chanson à partir du lien youtube.

Cela va obtenir les informations de la chanson en utilisant la bibliothèque ytdl que nous avons installée plus tôt. Ensuite, nous sauvegardons les informations dont nous avons besoin dans un objet de chanson.

Après avoir sauvegardé les informations de la chanson, nous avons juste besoin de créer un contrat que nous pouvons ajouter à notre file d'attente. Pour ce faire, nous devons d'abord vérifier si notre file d'attente serverQueue est déjà définie, ce qui signifie que la musique joue déjà. Si c'est le cas, nous devons simplement ajouter la chanson à notre file d'attente serverQueue existante et envoyer un message de réussite. Sinon, nous devons le créer et essayer de rejoindre le canal vocal et commencer à jouer de la musique.

Nous vérifions ici si serverQueue est vide et y ajoutons la chanson si ce n’est pas le cas. Nous devons maintenant créer notre contrat si serverQueue est null.

Dans ce bloc de code, nous créons un contrat et ajoutons notre chanson au tableau de chansons. Après cela, nous essayons de rejoindre le chat vocal de l'utilisateur et d'appeler notre fonction play () que nous allons implémenter par la suite.

Jouer des chansons

Maintenant que nous pouvons ajouter nos chansons à notre file d’attente et créer un contrat s’il n’en existe pas, nous pouvons commencer à mettre en œuvre notre fonctionnalité de lecture.

Premièrement, nous allons créer une fonction appelée play qui prend deux paramètres (la guilde et la chanson que nous voulons jouer) et vérifie si la chanson est vide. Si c'est le cas, nous allons simplement quitter le canal vocal et supprimer la file d'attente.

Après cela, nous commencerons à jouer notre chanson en utilisant la fonction playStream () et l’URL de notre chanson.

Ici nous créons un flux et lui passons l'URL de notre chanson. Nous ajoutons également deux écouteurs qui gèrent les événements end et error.

Remarque: Il s’agit d’une fonction récursive, c’est-à-dire qu’elle s’appelle encore et encore. Nous utilisons la récursivité pour que la chanson suivante soit lue à la fin.

Nous sommes maintenant prêts à jouer une chanson en tapant simplement! Play URL dans le chat.

Sauter des chansons

Nous pouvons maintenant commencer à implémenter la fonctionnalité de saut. Pour cela, nous devons juste mettre fin au répartiteur que nous avons créé dans notre fonction play () afin que la chanson suivante commence.

Ici, nous vérifions si l'utilisateur qui a tapé la commande est dans un canal vocal et s'il y a une chanson à sauter.

Arrêter les chansons

La fonction stop () est presque identique à skip () sauf que nous effaçons le tableau de chansons, ce qui obligera notre bot à supprimer la file d'attente et à quitter le chat vocal.

Code source complet pour le fichier index.js:

Ici vous pouvez obtenir le code source complet pour notre bot musical:

Lecture recommandée:

Conclusion

Vous avez fait tout le chemin jusqu'à la fin! J'espère que cet article vous a aidé à comprendre l'API Discord et à comprendre comment l'utiliser pour créer un simple bot. Si vous voulez voir un exemple de bot discord plus avancé, vous pouvez visiter mon référentiel Github.

Si vous avez trouvé cela utile, veuillez envisager de le recommander et de le partager avec d'autres développeurs.

Si vous avez des questions ou des commentaires, faites-le moi savoir dans les commentaires ci-dessous.

Si vous souhaitez obtenir des mises à jour continues sur mon blog, assurez-vous de me suivre sur Medium et de vous inscrire à ma newsletter.

Publié à l'origine sur gabrieltanner.org.