【发布时间】: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是提到的用户。
标签: javascript node.js discord