【问题标题】:Cannot set permissions on newly created channel无法对新创建的频道设置权限
【发布时间】:2020-10-29 05:35:53
【问题描述】:

我想让我的机器人能够创建私人工单。它可以很好地创建频道,但是当我尝试在该频道上设置权限时,它说@everyone 是唯一的角色(因此具有默认权限)。此外,控制台不会报告任何错误消息。

澄清一下,我无法让机器人向频道应用权限。

const client = new discord.Client();

const config = require("./config.json");

var userTickets = new Map();

client.login(config.token);

client.on("ready", () => {
    console.log(client.user.username + "has logged in.")
});

client.on("message", message => {
    if(message.author.bot) return;
    if(message.content.toLowerCase() === "?crearticket" && message.channel.id === "729851516667691058") {
    if(userTickets.has(message.author.id) || message.guild.channels.cache.some(channel => 
    channel.name.toLowerCase() === message.author.username + "-ticket")) {
        message.author.send("¡Ya tienes un ticket!");
    }
    else {
        let guild = message.guild;
        message.guild.channels.create(`${message.author.username}-ticket`, {
            type: "text",
            permissionsOverwrites: [
              {
                  id: message.author.id,
                  allow: ["VIEW_CHANNEL"]
              },
              {
                  id: message.guild.id,
                  deny: ["VIEW_CHANNEL"]        //This is the part I mentioned.
              },
              {
                  id: "729481759955222538",
                  allow: ["VIEW_CHANNEL"]
              },
            ],
        }).then(ch => {
            console.log("Creado el canal" + ch.name)
            userTickets.set(message.author.id, ch.id);
            console.log(userTickets);
        }).catch(err => console.log(err));
    }
    }
    else if(message.content.toLowerCase() == "?closeticket"){
        if(userTickets.has(message.author.id))  {
            if(message.channel.id === userTickets.get(message.author.id)) {
                message.channel.delete("Cerrando Ticket")
                .then(channel => {
                    console.log("Eliminado el canal " + channel.name);
                    userTickets.delete(message.author.id);
                })
                .catch(err => console.log(err));
            }
        }      
    }
});

【问题讨论】:

  • 请将您的代码放在您的问题中,而不是放在第 3 方网站上。
  • @zero298 代码太大,放不下。
  • 那么您的问题可能不适合本网站。我们需要看到minimal reproducible example 才能提供帮助。

标签: javascript discord.js


【解决方案1】:

permissionsOverwrites 更改为permissionOverwrites(你有一个额外的s)。
编码愉快!

【讨论】:

  • 效果很好。谢谢!。我是一个简单的编码器,并没有注意到这一点。谢谢! x2 @飞旭
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2018-12-15
  • 2021-01-02
  • 2012-01-10
相关资源
最近更新 更多