Créer un bot Discord en PHP

Créer un bot Discord en PHP

17 octobre 2017 Discord Edouard Lamoine Linux PHP Tutos 0
Exemple de bot Discord

 

Discord est le nouveau logiciel open-source aux airs d’évolution naturelle de Skype et Teamspeak, bien connus pour permettre des appels vocaux et vidéos temps réels, des chats etc.

Si Discord s’adresse plutôt aux gamers, il reste tout à fait possible de l’utiliser pour communiquer avec ses amis ou ses proches. Récemment, pour améliorer les fonctionnalités de communication jusqu’ici essentiellement basées sur le texte et sur le vocal, un chat vidéo a été lancé, permettant à la manière de Skype de passer un appel en utilisant sa webcam; sauf que l’équipe de développement a fait encore mieux en permettant de broadcaster sa caméra à travers tout un salon vocal, un peu comme le mode conférence de Skype.

En quelques sortes, Discord réunit le meilleur de Skype et Teamspeak, car il est intuitif à utiliser, et contrairement à TS, totalement gratuit. Il propose en outre de puissantes fonctionnalités pour les administrateur de serveurs Discord ainsi que pour les développeurs.

C’est là que ça devient intéressant !

Je me suis donc mis en tête de créer un bot Discord (un bot est un script qui tourne en boucle et apparaît comme un utilisateur aux yeux des autres utilisateurs. Il est possible de lui faire faire tout ce qu’un utilisateur normal peut faire, c’est-à-dire envoyer et répondre à des messages, rejoindre un salon vocal, changer les permissions et rôles…)

Commençons sans plus tarder à créer notre premier bot Discord !

Prérequis: un serveur Linux disposant d’une IP publique, avec PHP CLI installé dessus

Étape 1: installer le wrapper DiscordPHP

Vous pouvez faire cela de deux façons: soit vous téléchargez en .zip le Git, et vous le dézippez sur votre serveur, soit en l’installant via Composer:

root@MonServeurLinux> apt-get install composer

root@MonServeurLinux> composer require team-reflex/discord-php

 

Le code du bot PHP:

<?php

include __DIR__.'/vendor/autoload.php';

use Discord\Discord;
use Discord\Voice\VoiceClient;
use Discord\Parts\Channel\Channel;
use Discord\Parts\User\Game;
use Discord\Parts\Embed;
use Discord\Factory\Factory;

$token='YOUR BOT TOKEN HERE';

$bot_id='Discord bot id here';

 

$discord = new Discord([
'token' => $token,
]);

 

$discord->on('ready', function ($discord) {

$game = $discord->factory(Game::class, ['name' => 'faire le tuto !',]);
$discord->updatePresence($game);

$discord->on('message', function ($message, $discord) {
echo "message received from: ".$message->author->username.$message->author->id.' msg id:'.$message->id.' msg:'.$message->content . ' channel id:' . $message->channel_id, PHP_EOL;

 

$tab_bonjour = array("Bonjour", "Hello", "Salut");

$randombonjour=rand(0,count($tab_bonjour)-1);

if($message->author->id != $bot_id && strstr($message->content, 'onjour')) // message pas du bot + contient le mot "bonjour"
{

$reponse=$tab_bonjour[$randombonjour]; // on crée la réponse

$message->channel->sendMessage($reponse); //on l'envoie dans le même channel

}

});
});

$discord->run();

 

Commencez par déclarer votre bot chez Discord: créez une nouvelle « App », et choisissez de la transformer en bot. Récupérez ensuite l’ID du bot ainsi que le Token qui servira à l’authentifier.

Ajoutez ensuite le bot à votre serveur Discord grâce à ce lien: https://discordapp.com/oauth2/authorize?&client_id=ID_De_Votre_Nouveau_Bot&scope=bot

Vous devriez maintenant voir votre bot apparaître en déconnecté dans les utilisateurs de votre salon.

Remplacez les variables Token et Bot_Id du fichier .php plus haut avec les vôtres, et placez celui-ci sur votre serveur Linux.

Lancez en CLI le bot:

root@MonServeurLinux> php /usr/mesfichiers/bot.php

Si tout s’est bien passé, votre bot devrait répondre lorsque qu’il voit passer un message « Bonjour » (dans le salon textuel ou par message privé).

Vous verrez également qu’il affiche dans la console tous les messages qu’il reçoit 😉

Les possibilités sont infinies, à vous d’améliorer ce bot en fonction de vos propres besoins !

Prochaine étape, implémenter un bot vocal…