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

从函数中导出数据 [mysql, node.js, discord.js]

我的消息在 node.js/discord.js 中重复了很多次