0
votes

Commandes de rôle spécifiques pour Discord Bot

J'essaie de créer une commande pour mon robot de disque et j'essaye de la rendre liée au rôle.

J'ai parcouru d'autres questions sur ce site mais elles sont toutes en Python et non JS; et sur discord.js, leurs exemples sont complètement différents de ce que je veux faire. Tout jusqu'à ce point fonctionne parfaitement bien, c'est juste au moment où il arrive à cette partie (il n'y a rien au-dessus ou en dessous)

if (message.member.roles.name == "Owner") {
    return message.reply("You can use this command!")
  }
  if (message.member.roles.name != "Owner") {
    return message.reply("Sorry, an error occurred.")
  }

Je veux pouvoir voir "Vous pouvez utiliser cette commande!


0 commentaires

3 Réponses :


1
votes

Le problème est que message.member.roles ne sera pas un élément unique, ce sera une collection de rôles que possède l'utilisateur, vous devez donc rechercher dans les rôles pour vérifier si l'utilisateur a un rôle.

Vous pouvez utiliser la fonction .find() pour voir si l'utilisateur a un rôle. Il prend une fonction (dans ce cas, une fonction lambda) qui passe r (étant le rôle), et vérifie si r.name est égal à votre rôle (dans ce cas, Owner)

if(message.member.roles.find(r => r.name === "Owner")){
  return message.reply("You can use this command!")
} else {
  return message.reply("Sorry, an error occurred.")
}


0 commentaires

0
votes

Une autre alternative est que vous pouvez obtenir le rôle par leur ID (car ils ne changent probablement pas régulièrement), puis vérifier si l'utilisateur a ce rôle.

let ownerRole = message.guild.roles.get('123456789');
let moderatorRole = message.guild.roles.get('123456789');

if(msg.member.roles.has(ownerRole.id)) {
    // the user has the role
} else {
    // the user doesn't have the role.
}


0 commentaires

0
votes

Je pense que tu devrais l'écrire comme ça. Cela peut éviter de nombreuses erreurs comme "message.member.roles.name n'est pas une fonction"

Voici mon code:

client.on('message', message => {
            const roleName = message.member.roles.cache.find(r => r.name === "Owner")
            if (roleName) {
                return message.reply("You can use this command.")
            } else {
                return message.reply("Sorry, an error occured.")
            }


1 commentaires

N'utilisez que des extraits de code pour le code complet qui s'exécute à partir du navigateur. Sinon, utilisez des blocs de code.