Bonjour,
Je découvre JS avec la création de ce premier bot Discord. Il sert sur notre support de role play à centraliser des messages que les joueurs envoient par MP au bot et que celui ci range dans des cc "boite à lettres" que seuls les admins peuvent consulter. Tout ceci marche bien, mais je voudrais que les admins puissent aussi répondre à ces messages en passant par le bot.

Ce que je fais

Le code actuel :

bot.on('message', async message => {
    if (message.author.bot) return;

    let prefix = process.env.PREFIX;
    let messageArray = message.content.split(" ");
    let command = messageArray[0];
    let args = messageArray.slice(1);
    let target = messageArray[1];

    // COMMANDES DE SUIVI RP
    if (command === `${prefix}occultisme`){
        bot.channels.get("673884257764114445").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }
    if (command === `${prefix}psychologie`){
        bot.channels.get("673885130473078817").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }
    if (command === `${prefix}infirmerie`){
        bot.channels.get("673886208538968064").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }
    if (command === `${prefix}requete`){
        bot.channels.get("673884684404391946").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }
    if (command === `${prefix}exploration`){
        bot.channels.get("673885063829520384").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }
    if (command === `${prefix}logement`){
        bot.channels.get("673886401917485088").send("**" + message.author + " a posté ce suivi : **" + args.join(" "));
    }

Ce que je veux

Je voudrais ajouter une commande qui ressemble à "!rep @username ContenuDeLaRéponse"
Mais je n'ai aucune idée de la synthaxe à adopter. J'ai déclaré une variable "target" pour que ça soit la première occurence après ma commande, mais je ne sais pas comment dire que "target" serait l'user vers lequel envoyer un DM...
Je ne connais que

message.author.createDM()

Sauf que - vous l'aurez compris - ce n'est pas l'auteur de la commande que je souhaite viser, mais un user saisi manuellement après le premier espace dans ma commande.

Merci par avance pour votre aide.

2 réponses


Kareylo
Réponse acceptée

Hello, regarde à la propriété message.mentions Message.mentions

Merci, mon code fonctionne, je n'avais pas trouvé cette propriété :)
Voilà comment j'ai fait cette partie là :

// REPONSES AUX SUIVIS EN DM
    if (command === `${prefix}rep`){
        let destinataire = message.guild.member(message.mentions.users.first());
        if (!destinataire){
            return message.channel.send("L'utilisateur n'existe pas");
        }
        destinataire.sendMessage(args.join(" "));
    }

Merci encore !