【问题标题】:Get permissions from bot user in Discord.js v14?从 Discord.js v14 中的 bot 用户获取权限?
【发布时间】:2022-11-29 07:49:24
【问题描述】:

我想在执行命令之前检查我的机器人的权限。我之前让它工作得很好:

// Discord.js v13
if (interaction.guild.me.permissions.has(Permissions.FLAGS.MANAGE_MESSAGES)) {
    interaction.reply("I can manage messages!");
}

但是,Guild.me 在 Discord.js v14 中不再可用,Official Guide 建议改为使用 GuildMemberManager.me

我尝试使用新对象:

const { GuildMemberManager, PermissionsBitField } = require('discord.js');

// Attempt #1

if (GuildMemberManager.me.permissions.has(PermissionsBitField.Flags.ManageMessages)) {
    interaction.reply("I can manage messages!");
}

// Attempt #2

if (interaction.guild.GuildMemberManager.me.permissions.has(PermissionsBitField.Flags.ManageMessages)) {
    interaction.reply("I can manage messages!");
}

// Attempt #3

if (GuildMemberManager.me.permissionsIn(channel).has(PermissionsBitField.Flags.ManageMessages)) {
    interaction.reply("I can manage messages!");
}

但是,所有这些尝试都会返回相同的错误:

TypeError: Cannot read properties of undefined (reading 'me');

// Attempt #3
TypeError: Cannot read properties of undefined (reading 'permissionsIn');

我不明白新的 GuildMemberManager.me 对象是如何工作的。对我的问题的任何进一步解释或解决方案将不胜感激!

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    在 discord.js 文档中,对象的类是 GuildMemberManager,但该对象实际上只是用关键字 members 引用的。 Here's a link to the object in the docs。这在 v14 中对我有用:

    interaction.guild.members.me.permissions.has(PermissionsBitField.Flags.ManageMessages)
    

    此外,请确保您使用的是最新版本的 discord.js。 v13 等早期版本中未定义此属性。

    【讨论】:

    • 抱歉投反对票,但这对我不起作用。 guild.members.me 未定义
    • 这不是我的帖子的问题,guild.members.me 在 discord.js 上是 clearly documented。请检查您如何尝试访问该变量,或者您是否以某种方式拥有过时的 discord.js 版本以致该选项不存在。另外,请阅读SO帮助中心的when should I vote down。答案显然适用于其他用户(因此标记为答案),因此不应该仅仅因为它对你不起作用就使用 downvoting 功能。
    • 似乎 NPM 没有更新 discord.js 尽管我很好地询问。检查了版本,我还在 v13.20.0-哎呀。
    • 很高兴你让它工作了。只是建议你删除你的反对票,这样有这个问题的用户就不会到达这个页面并立即离开,认为答案是错误的,因为它的分数是否定的。我也将您的解决方案编辑到了帖子中。
    猜你喜欢
    • 2019-10-29
    • 1970-01-01
    • 2019-04-01
    • 2021-06-21
    • 2021-08-05
    • 1970-01-01
    • 2017-04-16
    • 2023-02-20
    • 2020-11-13
    相关资源
    最近更新 更多