我想为我的 Discord 机器人编写一个禁止
命令。我有这一行,机器人应该检查用户是否具有管理员权限。如果应该被禁止的用户拥有它们,则机器人不会禁止该用户并崩溃。当我尝试运行此命令时,我得到这个:
TypeError: Cannot read properties of undefined (reading 'has')
我不明白为什么。我问的人都不能帮助我,我在网上什么也没找到,所以我希望我能在这里找到帮助。
我的代码:
const discord = require('discord.js');
const { Permissions } = require('discord.js');
module.exports.run = async (Client, message, args) => {
if (!message.member.roles.cache.some(role => role.id == 589850931785498624)) {
return message.reply("You don't have the perms.");
}
const mention = message.mentions.users.first();
if (!mention) {
return message.reply('You need to tag a user!');
}
if (mention.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS)) {
return message.reply("You can't ban an Administrator!")
}
//message.guild.members.ban(mention);
}
module.exports.help = {
name: "ban",
aliases: ["b"],
}
“TypeError: 无法读取未定义的属性(读取'has')”表示提及权限
未定义
。这是因为您的提及
变量是用户
,只有公会成员
才有权限
。
另一个错误是,您尝试检查 role.id
是否等于数字/整数,但雪花(如589850931785498624
)应始终为字符串,因为它们大于MAX_SAFE_INTEGER
。
module.exports.run = async (Client, message, args) => {
if (!message.member.roles.cache.some((role) => role.id == '589850931785498624'))
return message.reply("You don't have the perms.");
const mentionedMember = message.mentions.members.first();
if (!mentionedMember)
return message.reply('You need to tag a user!');
if (mentionedMember.permissions.has(Permissions.FLAGS.MANAGE_CHANNELS))
return message.reply("You can't ban an Administrator!");
message.guild.members.ban(mentionedMember);
};