【问题标题】:Unable to get member permissions from messageCreate无法从 messageCreate 获取成员权限
【发布时间】:2022-12-17 01:11:08
【问题描述】:

我制作了一个 automod 系统,它只审核没有管理员的用户。出于某种原因,我不断收到错误“TypeError:无法读取 null 的属性(读取‘权限’)”。这是代码:

client.on('messageCreate', async message => {
    if (message.member.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) return;

【问题讨论】:

  • 成员在公会之外返回 null。确保您在服务器中发送消息
  • 抱歉,我是 Discord.JS 的新手。我不是在 DMing 机器人或任何东西,但它仍然会出现此错误。
  • 您是在服务器中编写消息吗?
  • 是的,我想我只是通过添加行 if (!message.member) return 来修复它
  • 对于其他有这个问题的人,假设他们确定他们有必要的意图,没有引用 DM 等,我最近发现了一个模式,message.membernull 当消息的作者是机器人时。这可能是您的问题。我通过检查message.author.bot 是否为真解决了这个问题,并通过message.guild.members.cache.get(message.author.id) 手动从缓存中获取成员。工作起来很有魅力。使用 message.fetch() 也可能有效。当解决方案如此简单时,不确定为什么会出现此问题。

标签: discord discord.js bots


【解决方案1】:

你需要从 discord.js 获取 PermissionFlagsBits

然后在您的代码上将其更改为:

if (message.member.permissions.has(Permissions.FLAGS.ADMINISTRATOR)) return;

if (message.member.permissions.has(PermissionFlagsBits.Administrator)) return;

【讨论】:

    【解决方案2】:

    尝试使用 npm update 更新您的依赖项

    【讨论】:

      【解决方案3】:

      您是否尝试添加 Const?

      const { Permissions } = require('discord.js');
      

      【讨论】:

        猜你喜欢
        • 2015-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        • 2023-03-31
        相关资源
        最近更新 更多