[Discord Js] Récupérer le contenu d'un message

Le problème exposé dans ce sujet a été résolu.

Bonjour :)

Je suis en train de coder un bot Discord sur node js, et je me retrouve confronter à un problème. Le but ici est de récupérer le contenu d’un message qu’envoie un utilisateur en message privé à mon bot, pour que celui ci le réécrive autre part en tant que bot.

Pour faire simple, dans la théorie, ça donnerait ça.

Un utilisateur envoie un message privé au bot : "!abc Je sais compter jusqu’à 3" Le bot stock dans une variable le contenu, cible un channel d’un serveur et réécrit : "Je sais compter jusqu’à 3"

Je sais détecter le "!abc", je sais écrire un message dans un channel ciblé, mais je ne sais pas comment récupérer le "Je sais compter jusqu’à 3" J’ai lu la documentation à la recherche de quelque chose pour m’aider, mais je n’ai trouvé que des commandes pour l’afficher dans le log de la console.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login(process.env.TOKEN) //TOKEN
bot.on('message', message => {
    if (message.content === '!abc') {
    [Stocke le message après !abc]
    var channel = client.servers.get("lasil", [ID de mon serveur]);
    client.sendMessage(channel, [Message stocké] );  
}
});

Je vous remercie d’avance :)

Bonsoir, et merci à vous pour votre réponse :) J’ai corrigé mon code grâce à vos corrections. Néanmoins, pour la variable str, elle doit être déclaré et donner avant d’extraire le texte… Une idée de comment l’introduire dans le code ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
const Discord = require('discord.js');
const bot = new Discord.Client();

bot.login(process.env.TOKEN) //TOKEN
bot.on('message', message => {
    if (String.prototype.startsWith('!abc')) {
    var str = [...]
    str.substr(5));
    var channel = client.servers.get("lasil", [ID de mon serveur]);
    client.sendMessage(channel, str );  
}
});
+0 -0

J’écris "!abc bonjour" sur Discord, il le détecte, mais il est incapable de récupérer le bonjour :/ J’essaie ton code, mais j’arrive pas à comprendre comment tu arrives à récupérer le message Discord dans une variable :/

1
2
3
4
5
6
7
bot.on('message', message => {
    if (String.prototype.startsWith('!abc')) {
    str.substr(5);
    console.log('(1): ' + str.substr(1));  
    message.channel.sendMessage(str);
}
});
+0 -0

Dans message ? Rien, c’est pour appeler le fait que le bot va envoyer un message non ? (Je débute encore, surtout avec Discord Js, donc c’est pour ça que je galère Je te donne le code tel qu’il est actuellement :

1
2
3
4
5
6
7
bot.on('message', message => {
    if (String.prototype.startsWith('!abc')) {
    str.substr(5);
    console.log('(1): ' + str.substr(1));  
    message.channel.sendMessage(str);
}
});

Non mais .on( indique que c’est un EventEmitter, et message est ce qui est envoyé avec l’événement.

bot.on('message', cb) exécute cb chaque fois qu’un événement 'message' est envoyé. cb reçoit le message comme seul argument.

Je connais rien à discord mais je te parie que

1
bot.on('message', coucou => console.log(`voici: ${coucou}`))

affiche les messages dans la console.

Après je sais pas si l’argument est un objet, une string, autre, mais tu peux l’afficher pour voir ce que c’est. JSON.stringify(message, null, 2) si c’est un objet.

+0 -0

Ah, je vois, j’essaie ça alors :)

EDIT : Ok, tu m’as bien aidé, j’ai compris comment ça marchait ! Le bot discord envoie bien le message que j’ai écris, il faut maintenant que je réussisse à les éditer :) Je retente la commande str du coup ?

EDIT 2 : CA MARCHE :D J’ai compris mes erreurs grâce à ton message :) Du coup, en code final, ça donne ça

1
2
3
4
5
6
bot.on('message', message => {
    if (message.content.startsWith('!abc')) {
    var str = message.content
    message.channel.sendMessage(str.substring(5))
}
});
+0 -0

Bien, ça fonctionne environ, bravo !

Maintenant t’as 2 problèmes. Le premier c’est !abcsalut, ça va donner alut. C’est pour ça que dans un précédent message je détectais '!abc ' et non '!abc'.

Le second c’est que ton code va être moche et difficile à maintenir, là.

Regarde, déjà mieux :

1
2
3
4
5
6
7
8
const uneCommande = '!abc '

bot.on('message', message => {
  if (message.content.startsWith(uneCommande)) {
    const str = message.content.substring(uneCommande.length)
    message.channel.sendMessage(str)
  }
});
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte