【问题标题】:Change channel permissions with a command (Javascript Discord.js)使用命令更改频道权限 (Javascript Discord.js)
【发布时间】:2020-08-12 05:52:00
【问题描述】:

我尝试了无数不同的事情并阅读了多个不同的文档,但总是以某种错误告终。

lock 命令运行时,我需要它来做这些事情:

  • @everyone 上查找将Send Messages 设置为true 的所有频道
  • 在这些频道上将@everyone 上的Send Messages 更改为false
  • 向这些渠道发送嵌入消息

unlock 命令运行时,我需要它来做这些事情:

  • 将权限设置回它们在这些频道上的状态(Send Messages 回到 true @everyone

我已经在 Admin 角色上尝试过这个,但它不起作用并且它没有做我上面想做的事情:

if (command === "lock") {
    let channel = message.channel;
    let roles = message.guild.roles; // collection
    const adminRole = message.guild.roles.cache.find(r => r.name === 'Admin');

    // overwrites 'SEND_MESSAGES' role, only on this specific channel
    channel.overwritePermissions(
        adminRole,
        { 'SEND_MESSAGES': false },
        // optional 'reason' for permission overwrite
        'lockdown'
    )
        // handle responses / errors
        .then(console.log)
        .catch(console.log);
}
});

【问题讨论】:

  • 你需要展示你的尝试
  • @Syntle 我在“管理员”角色上试过这个:imgur.com/qThri8x 但它不起作用,而且它并没有完全符合我的要求
  • 最好通过编辑在问题本身中包含对问题的任何进一步解释。
  • 好的,我已经编辑过了

标签: javascript discord.js


【解决方案1】:

你使用overwritePermissions()的方式不对,应该是这个样子:

channel.overwritePermissions([
  {
     id: adminRole.id,
     deny: ['SEND_MESSAGES'],
  },
], 'Lockdown');

【讨论】:

  • 如果一个答案已经解决了您的问题,您应该接受它,以便其他寻找答案的人知道什么有效
  • 它确实解决了部分问题,但我仍然希望知道如何做我在主帖中提到的事情
猜你喜欢
  • 1970-01-01
  • 2021-09-16
  • 2021-04-18
  • 2021-02-01
  • 2021-01-01
  • 1970-01-01
  • 2018-03-04
  • 2021-01-11
  • 2021-10-06
相关资源
最近更新 更多