-2
votes

Comment puis-je mentionner 2 utilisateurs dans un message de bot discord

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?!


4 commentaires

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


3 Réponses :


-1
votes

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.


2 commentaires

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.



0
votes

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...
    }
}


0 commentaires

0
votes

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!`);


0 commentaires