【问题标题】:How can I change the permissions for a channel in discord.js?如何更改 discord.js 中频道的权限?
【发布时间】:2021-04-18 19:20:06
【问题描述】:

我想为每个人更改频道中的权限。这是我当前的代码:

module.exports = {
  name: "lockdown", // this would be changed to "remove"

  run: async (client, message, args) => {
    message.guild.channels.cache.forEach(r => {
      message.guild.members.cache.forEach(d => {
      r.overwritePermissions([
    {
        id: d.user.id,
        deny: ['SEND_MESSAGES']
    }]);
      })
    })
  }
}

这不起作用,它会更改任何人的权限并且不会执行任何操作。为什么? 帮助将不胜感激!

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    您可以在不对公会成员使用 forEach 语句的情况下做到这一点。您所要做的就是:

    module.exports = {
      name: "lockdown",
      run: (client, message, args) => {
        message.guild.channels.cache.forEach(r => {
          r.overwritePermissions([
        {
            id: message.guild.roles.everyone.id,
            deny: ['SEND_MESSAGES']
        }]);
        })
      }
    }
    

    我在手机上写这篇文章,所以很难,但应该可以!在此处阅读有关@everyone 角色的更多信息:https://discord.js.org/#/docs/main/stable/class/RoleManager?scrollTo=everyone

    【讨论】:

      【解决方案2】:

      您可以简单地声明@everyone 角色(显然每个用户都拥有)的权限,方法是将要更新的角色/用户的 id 设置为 Guild 对象的 id 属性:

      module.exports = {
        name: "lockdown",
      
        run: async (client, message, args) => {
          message.guild.channels.cache.forEach(r => {
            r.overwritePermissions([
          {
              id: message.guild.id,
              deny: ['SEND_MESSAGES']
          }]);
            })
          })
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-16
        • 2021-02-01
        • 2020-08-12
        • 1970-01-01
        • 2021-06-21
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多