【问题标题】:To check if a mentioned user has the role or not in discord.js检查提到的用户是否在 discord.js 中具有角色
【发布时间】:2021-11-15 14:23:11
【问题描述】:

我正在制作一个与 discord.js 不和谐的管理机器人。我正在尝试创建一个赋予用户特定角色的命令。因此,我想先检查该用户是否事先具有该特定角色,以避免错误。问题在于检查用户是否具有角色的 if 语句,它给了我一个错误“TypeError:无法读取未定义的属性(读取'has')”。请建议我如何解决这个问题。

const {
    Role,
    ThreadManager
} = require("discord.js");
const ms = require('ms');

module.exports = {
    name: 'gulag',
    description: "gulag",
    execute(message, args) {

        if (message.member.permissions.has("ADMINISTRATORS")) {
            const target = message.mentions.users.first();
            const check = message.mentions.users.first();
            if (target) {

                let gulagRole = message.guild.roles.cache.find(role => role.name === 'gulag');
                let memberTarget = message.guild.members.cache.get(target.id);


                if (check.roles.has(gulagRole.id)) {
                    message.reply(`<@${memberTarget.user.id}> is already in gulag.`)
                } else {
                    memberTarget.roles.add(gulagRole.id);
                    message.channel.send(`<@${memberTarget.user.id}>`);
                    message.channel.send('https://tenor.com/view/gulag-warzone-call-of-duty-cod-battle-royale-gif-16853559');
                }


            }

        }

    }
}

【问题讨论】:

  • 你在使用 Discord.js v13吗?

标签: javascript discord.js


【解决方案1】:

我会直接选择message.mentions.members.first(),因为这将返回GuildMember,因此检查角色会更容易

const target = message.mentions.members.first()
if(target){
      if(target.roles.cache.find(r => r.name === 'gulag')){
            //REST OF THE STUFF
      }
}

如果您使用的是 v13,请记住也要为您的客户声明 Intent。

【讨论】:

  • 好的,谢谢!
  • 伟大的@Bolt 记得将其标记为已解决,(在答案上打勾)
猜你喜欢
  • 2022-01-19
  • 2021-10-25
  • 2021-05-30
  • 2020-09-21
  • 2020-12-27
  • 2021-04-06
  • 1970-01-01
  • 2023-03-03
  • 2021-04-01
相关资源
最近更新 更多