检查提到的用户是不是在 discord.js 中具有角色
Posted
技术标签:
【中文标题】检查提到的用户是不是在 discord.js 中具有角色【英文标题】: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吗? 【参考方案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 记得将其标记为已解决,(在答案上打勾)以上是关于检查提到的用户是不是在 discord.js 中具有角色的主要内容,如果未能解决你的问题,请参考以下文章