[JS] II - Créer un bot discord

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

0x71

Membre
Apr 17, 2017
18
9
8
Hello tout le monde, on se retrouve pour la deuxième partie de ma série : Comment coder un bot discord. Allez voir la première partie si vous ne l'avez pas encore vu !



L'INVITATION


Dans le dernier épisode, on s'était arrêté sur la création de TCHOIN (mon bot :trollface:), Discord a un système d'invitation très spéciale. Elle marche par équation binaire (multiplication), et chaque permission a un nombre. On va calculer cette équation avec un site, qui le fait automatiquement :)


Pour l'instant, on va TOUT cocher, comme ça, pas de problème de permission.

Après avoir tout cocher, en bas on insert notre Client ID, disponible sur la page de votre application (bot)




2pps.gif


Vous invitez votre bot dans votre serveur, le mieux est d'en faire un de développement.


up55.png

Note : En général, évitez de mettre des projets pas finalisés en prod.



PREMIÈRE COMMANDE




Maintenant que ma TCHOIN a rejoins ma cham.. serveur, on va lui faire des choses :pedobear: Enfin, lui faire dire des choses !


On va faire que lorsque qu'on dit "!ping" le bot réponde avec un "Pong!"


Mais d'abord, on va demandé au bot de nous prévenir lorsqu'il est opérationnel dans la console. pour cela on va faire un event ready.


Code:
bot.on('ready', () => {

  console.log('TCHOIN est prête!');

});


Et quand on exécute le bot, on peut voir qu'il nous répond !:



ocip.png



Maintenant que notre bot nous répond, on peut créer la commande !Ping,


Code:
bot.on('message', message => {

    if (message.content === 'ping') {

    message.channel.sendMessage('pong');

  }

});


Donc, j'explique le code :


  • Sur la première ligne, on dit que notre event est un message
  • Sur la deuxième, de vérifier si la commande contient bien ping
  • Et la dernière, et d'envoyer un message dans le channel correspondant au message.



[/FONT]

Utilisation de Commando



Maintenant qu'on sait utiliser la libraires discord.js, on va utiliser Commando, qui est lui, plus rapide d'utilisation et plus facile a comprendre.


Pour télécharge Commando, on fait comme avec discord.JS !


Code:
npm install discord.js-commando --save


Maintenant, on peut supprimé notre ancienne constante Discord, et à la place: Commando !


On remplace aussi Discord.Client par Commando.Client.


Code:
const Commando : require('discord.js-commando');

const bot = new Commando.Client();


Avec Commando, on peut créer des groupes de commandes, telles que "random", "util", "admin", ou autre !



On va enregistré notre groupe, puis lui donner comme nom Random.


Code:
bot.registry.registerGroup('random', 'Random')


Et dire que nos commandes sont dans le répertoire /commands, cela nous permettra de mieux s'organiser.


Code:
bot.registry.registerCommandsIn(__dirname + "/commands");


Nous allons donc créer ce fameux dossier commands, et dedans le dossier de notre groupe, ici random.


Après, on va demander au bot de créer les commandes automatiquement par défaut, telle que !help ou autre.


Code:
bot.registry.registryDefaults();




COMMANDO - PREMIÈRE COMMANDE



On peux enfin créer notre commande facilement, pour l'instant on va faire un dice roll, c'est à dire qu'on va lancé un dès (virtuellement) et il va nous donner le chiffre sur le quel on est tombé ! Utile pour faire des loteries ou autre.


On créer notre fichier dice_roll.js dans le dossier random, et on appelle Commando, avec une constante, comme avant.


Code:
const Commando = require('discord.js-commando');


On créer notre class DiceRollCommand, et on va utilisé "extends", il sert a dire que notre class utilise un package, ici Commando.Command.


Code:
class DiceRollCommand extends Commando.Command {



}



Avant de commencer a écrire nos fonctions, on va écrire en bas (donc pas dans les accolades)


Code:
module.exports = DiceRollCommand;


On va dire que DiceRollCommand va être importé dans notre index, et donc le bot va le reconnaître.






On créer un constructor, il sert a créer et a démarrer un objet.


Code:
constructor(client) {


      super(client, {


});

}


On va lui donner une "carte d'identité", lui donner un nom, une description ect.. Tout ça dans le "super".


Code:
constructor(client) {


    super(client, {

        name: 'roll',

        group: 'random',

        memberName: 'roll',

        description: 'Loterie'


    });

}


Après ça, on va créer une fonction async, donc qui est asynchrone, qui renvoie a un objet. Ici, c'est quand on va taper "!roll" que la fonction va démarrer. Elle va démarrer avec un message, avec des arguments (args)


Code:
async run(message, args){



}


Désolé pour certains, mais on va faire des maths :o.O:. Avec une fonction Math.floor(x). A
l’intérieur on va dire de trouver un nombre aléatoire entre 0 et 1, va être multiplié par 6 et on rajoute +1. On créer une variable roll.


Code:
var roll = Math.floor(Math.random() * 6) + 1;


Et le bot répond à l'utilisateur avec son nombre + une petite phrase.


Code:
message.reply("Vous êtes tombé sur un" + roll);





t6bb.png




Il faut démarrer le bot désormais, mais pas comme avant avec "node ." mais avec "node --harmony .", harmony va se charger d'exécuter tout les modules nécessaire au bon déroulement de notre programme.


Donc on démarre TCHOIN !


Code:
node . --harmony


On va sur Discord, et TADA !

 

Ysaë

Nouveau membre
Jan 23, 2019
1
0
1
23
Super Tuto mais je ne vois pas où mettre le "node . --harmony" une aide serait la bien venue :)