我不断收到关于 discord.js 中 .position 的错误
Posted
技术标签:
【中文标题】我不断收到关于 discord.js 中 .position 的错误【英文标题】:i keep getting an error about .position in discord.js 【发布时间】:2021-02-13 16:54:42 【问题描述】:所以我尝试在 dicors.js 中创建一个 kick 命令(创建一个机器人)。我做了一些研究,最终从堆栈溢出中复制了一段代码。代码工作正常,但我想这样做,所以如果等级较低的“x”试图踢高等级的“y”,机器人会向“x”发送一条消息,表明他不能踢等级较高的人。 (x 和 y 都是用户)
我复制的代码也包含此功能,但我不断收到此错误
let authorHighestRole = msg.member.highestRole.position;
^
TypeError: Cannot read property 'position' of undefined
我在网上搜索:没有。 我尝试了一些愚蠢的事情,比如将 () 添加到 .position 我在 Discord.js 文档中进行了搜索,但仍然一无所获。
我得出的结论是代码很旧。
这是我的代码
case 'kick' :
if(msg.channel.type === 'DM')
msg.channel.send('This command can use only in guide');
return;
;
if(!msg.member.hasPermission('KICK_MEMBERS'))
msg.channel.send('You have no permissions to do that');
return;
;
let mentionMember = msg.mentions.members.first();
if(!mentionMember)
msg.channel.send('Please specify the person you want to kick!');
return;
if(!mentionMember.kickable)
msg.channel.send('I can\'t kick this user!');
return
;
//Get the highest role of user for compare
let authorHighestRole = msg.member.highestRole.position;
let mentionHighestRole = mentionMember.highestRole.position;
//If mention user have same or higher role, so show this error msg
if(mentionHighestRole >= authorHighestRole)
msg.channel.send('You can`t kick members with equal or higher position');
return;
;
mentionMember.kick()
msg.channel.send(`$mentionMember.displayName was kicked`)
break;
任何帮助将不胜感激。
【问题讨论】:
msg.member.highestRole
是undefined
。你有没有试过检查msg.member
有什么属性?
我猜它基本上是消息的作者,因为mentionMember
是提到的用户。
【参考方案1】:
member 不包含名为highestRole 的属性,我相信您要查找的属性是:member.roles.heighest。
参见文档:https://discord.js.org/#/docs/main/stable/class/GuildMemberRoleManager?scrollTo=highest
msg.member.roles.highest.position
【讨论】:
是的,这就是答案,非常感谢您的帮助;)以上是关于我不断收到关于 discord.js 中 .position 的错误的主要内容,如果未能解决你的问题,请参考以下文章
不断收到 DiscordAPIError:在 Discord.js 中的音乐机器人上使用 reconlx 的分页执行队列命令时出现未知交互
Node.js - 我不断收到以下错误:错误:ffmpeg 流:写入 EPIPE
Discord.js 机器人在更改意图后收到 Bitfield Invalid 错误
Discord js,TypeError:提供的参数既不是用户也不是角色