Eylexander / Project-1B

Learning JS through Discord.js
MIT License
0 stars 0 forks source link

Mention barely working #10

Closed Eylexander closed 2 years ago

Eylexander commented 2 years ago

Hey @dannyhpy, cela fait bien plusieurs mois que j'ai ce problème que j'ai du mal à comprendre. Il est en rapport avec la fonction message.mentions.users.first(). Celle-ci marche sans marcher. Par exemple, j'ai écrit ce script :

if (args[0] === targetMember) {
        return message.channel.send(embed);
    } else {
        message.channel.send("You failed your command somewhere.")
        message.channel.send(args[0])
    }

Lorsque je rentre ma commande avec une mention, il me dit d'abord ne pas marcher, il s'exécute alors sur la parte else puis renvoie bien une mention derrière.

dannyhpy commented 2 years ago

Utiliser message.mentions.users.first() n'est pas une bonne idée si t'utilises la mention du bot comme préfixe, style :

@MonBot pat @Utilisateur

message.mentions.users.first() renvoie @MonBot au lieu de @Utilisateur


Essaye de transformer la mention (en premier argument) en un ID et de jouer avec :


const userMention = args[0].match(/<@!?([0-9]*)>/)
if (userMention == null) {

  return message.channel.send("Il faut mentionner quelqu'un.")

} else {

  const user = client.users.get(userMention[1])

  return message.channel.send('Bonsoir ' + user.username)
}
Eylexander commented 2 years ago

Hey, ducoup je viens de regarder tout ça, et le problème à la base n'est pas le fait que j'obtienne que la prmière mention, c'est que la fonction ne marche pas du tout. Et pour ton script, je viens de l'appliquer à mon code, je détecte une erreur, je réessaie donc dans une commande neutre et le problème est toujours là.

const user = client.users.get(userMention[1])
                              ^

TypeError: client.users.get is not a function
    at Object.module.exports.execute (C:\Users\Eylexander\Desktop\Projets\Project-1B\commands\DevTools\test.js:19:31)
    at module.exports (C:\Users\Eylexander\Desktop\Projets\Project-1B\events\message.js:20:17)
    at Client.emit (node:events:406:35)
    at MessageCreateAction.handle (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)       
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)      
    at WebSocketShard.onMessage (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)     
    at WebSocket.onMessage (C:\Users\Eylexander\Desktop\Projets\Project-1B\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:394:28)
dannyhpy commented 2 years ago

TypeError: client.users.get is not a function

Ça doit être client.users.cache.get(...) Client -> UserManager -> Collection -> get()

Eylexander commented 2 years ago

Et bien avec ce correctif tout marche bien, merci !