J'utilise discord.js.
J'essaie de créer une commande de bot qui produira la sortie suivante:
(prefix) getaroom for (mentioned user 1) (mentioned user 2)
Lorsque la syntaxe est:
Welcome, (mentioned user 1) and (mentioned user 2), enjoy your stay!
Aidez-moi?!
3 Réponses :
Si vous les convertissez en une chaîne avec le symbole @ devant, cela fonctionne. Je suis presque sûr que cela fonctionnait lorsque je travaillais sur des bots en python.
comme <@ (userid)>?
discord.js.org/#/docs/main/stable/class/MessageMentions Je ne suis pas un développeur js, mais il semble que les mentions soient une collection dans laquelle je suppose que vous pouvez indexer.
Bien que message.mentions.users.first()
fonctionne bien pour le premier utilisateur mentionné quand il s'agit de vouloir un deuxième, troisième ou peut-être même quatrième, nous commençons à rencontrer divers problèmes.
La façon dont je préfère résoudre ce problème consiste à exécuter la fonction .forEach()
via message.mentions.users
.
Exemple:
var prefix = 'yourPrefixHere'; //Defining your prefix client.on('message', message => { //Adding your event listener if (message.content.toLowerCase().startsWith(prefix + 'getaroom') { //When the command is entered if (!message.mentions.first()) return message.channel.send(`You have not defined your users.`); //If the message did not include mentioned users var count = 0; //To find out what user we're on. let user1; //Defining the users let user2; //Defining the users message.mentions.forEach(user => { count++; //Adding one onto the count variable if (count >= 3) return; //If the user mentioned more than two users return if (count === 1) user1 = message.guild.members.cache.get(user.id); //Getting the first mentioned user else user2 = message.guild.members.cache.get(user.id); //Getting the second mentioned user }); //Rest of your code... } }
Vous pouvez convertir la collection message.mentions.users
en un tableau d'ID utilisateur avec Collection.prototype.keyArray()
.
const [first, second] = message.mentions.users.keyArray(); if (!first || !second) return message.channel.send('You need to mention two users!'); message.channel.send(`Welcome, <@${first}> and <@${second}>, enjoy your stay!`);
Vous pouvez essayer d'utilisermessage.mentions . Pouvez-vous également partager ce que vous avez essayé?
@IceBotYT J'ai utilisé message.mentions.users.first () pour le premier mais je ne sais pas comment faire le second
Pouvez-vous essayer
message.mentions.users.second()
?@IceBotYT, il a jeté une erreur. message.mentions.users.second n'est pas une fonction