我不断收到关于 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.highestRoleundefined。你有没有试过检查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:提供的参数既不是用户也不是角色

discord.js 中的“MessageEmbed 字段值可能不为空”问题

discord.js:JSON 星球属性未定义