Node.js Discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”
Posted
技术标签:
【中文标题】Node.js Discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”【英文标题】:Node.js Discord.js UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'calculatedPosition' of undefined 【发布时间】:2020-09-21 07:24:49 【问题描述】:我正在使用 discord.js,我正在执行禁止命令,但出现此错误:UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'calculatedPosition' of undefined
我的代码是:
let banUser = message.guild.member(message.mentions.users.first())
let bannerHighRole = message.member.highestRole.calculatedPosition;
let getBannedHighRole = banUser.highestRole.calculatedPosition;
if (bannerHighRole < getBannedHighRole) return message.reply("You cannot ban users that have higher roles than you!")
if (bannerHighRole = getBannedHighRole) return message.reply("You cannot ban users that have same highest role!")
如何解决此错误? 我在 Discord.js v12 上运行机器人
【问题讨论】:
你能贴出完整的上下文代码吗?你使用的是什么版本的 discord.js? v12.完整封禁代码为:hastebin.com/ekovemidek.js 【参考方案1】:这必须是 v11 或之前的代码,检查文档以更新您的其他代码,但无论如何:
他们已经将很多像 fetchMessages
这样的 camelCase 函数更改为像 messages.fetch
这样的东西,可能会有用。
// you can use message.mentions.members instead of converting a user
let banUser = message.mentions.members.first();
let bannerHighRole = message.member.roles.highest.position;
let getBannedHighRole = banUser.roles.highest.position;
if (bannerHighRole < getBannedHighRole) return message.reply("You cannot ban users that have higher roles than you!");
//you had x = y, which is an assignment
if (bannerHighRole === getBannedHighRole) return message.reply("You cannot ban users that have same highest role!");
还看到了完整的代码,你应该在计算所有这些之前检查用户是否有 mod/admin。
【讨论】:
以上是关于Node.js Discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“calculatedPosition”的主要内容,如果未能解决你的问题,请参考以下文章
Node.js + Discord.js:无法读取未定义的属性“类”
node.js/discord.js:TypeError:无法读取 null 的属性“setPresence”
Node.Js 版本 14 抛出 e;不和谐机器人的错误(discord.js)
异步/等待 Discord.js Node.js Javascript JS