Je tente actuellement de créer mon premier bot Discord et j'ai pu faire quelque chose d'assez basique comme répondre 'pong' lorsque l'on lance la commande '!ping'.
// Load up the discord.js library
const Discord = require("discord.js");
// This is your client. Some people call it `bot`, some people call it `self`,
// some might call it `cootchie`. Either way, when you see `client.something`, or `bot.something`,
// this is what we're refering to. Your client.
const client = new Discord.Client();
// Here we load the config.json file that contains our token and our prefix values.
const config = require("./config.json");
// config.token contains the bot's token
// config.prefix contains the message prefix.
client.on("ready", () => {
// This event will run if the bot starts, and logs in, successfully.
console.log(`Bot has started.`);
});
client.on("message", msg => {
if (msg.content === '!ping') {
msg.reply('Pong!');
}
});
client.login('token');
Maintenant, l'étape que je cherche à réaliser est plus complexe et je n'ai pas réussi à trouver comment faire après moultes recherches sur des forums, documentations et tutos...
J'aimerais pouvoir lier mon bot Discord à un site web !
Pour mieux illustrer cela, disons que notre site web à un formulaire (pour ajouter une paire de chaussure dans une BDD). Lorsque l'on ajoute cette paire de chaussure en base, j'aimerais appeler le bot Discord afin qu'il rédige un message sur un salon afin de prévenir qu'une nouvelle paire de chaussure est disponible !
Est-ce qu'il est possible d'appeler notre bot depuis un site web et d'y lancer des fonctions à la manière d'une API REST ? Et si oui, avez-vous des exemples/tutos à me conseiller ?
En vous remerciant d'avance
- Edité par KuroTsubasa 24 octobre 2020 à 23:48:23
Bonjour ton application node en plus d'ouvrir un bot discord peut faire tous ce qu'une application node peut faire (ouvrir un serveur HTTP écouté une requête provenant d'un client et faire une action en retour).
L'exemple ci-dessous utilise express en tant que router HTTP pour simplifié le code
Importé et créé le server HTTP avec express:
// prepare HTTP server
const express = require('express');
const app = express();
const server = require('http').Server(app);
Comme le serveur HTTP consomme le client Discord il doit attendre que le client et prêt pour démarré:
client.on("ready", () => {
// This event will run if the bot starts, and logs in, successfully.
console.log(`Bot has started.`);
// await bot started for open HTTP server
server.listen(process.env.NODE_ENV || 3000, () => {
console.log(`Server HTTP is open`);
});
});
Puis tu peut ensuite ajouté les routes que tu veut à ton serveur HTTP,
par exemple cette route envoi un message sur un channel pour chaque requête reçu.
client.on("ready", () => {
// This event will run if the bot starts, and logs in, successfully.
console.log(`Bot has started.`);
// await bot started for open HTTP server
server.listen(process.env.NODE_ENV || 3000, () => {
console.log(`Server HTTP is open`);
});
app
.get('/send-pong', (request, response) => {
client.channels.fetch('<CHANNEL_ID>')
.then(channel => {
if(channel.isText()) {
// is a TextChannel <https://discord.js.org/#/docs/main/stable/class/TextChannel>
channel.send(`une chausure à été ajouté à la BDD`)
.then(() => {
response.json({
sucess: true
});
})
.cath(error => {
response.json({
success: false,
reason: error.message
});
})
}
})
.catch(error => {
throw new Error(error.message);
})
});
});
suggestion de présentation.
Bot Discord js appelé par un site web
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
suggestion de présentation.