我该如何解决这个Discord.js问题

时间:2020-10-07 14:40:14

标签: discord discord.js

我正在为一个不和谐服务器创建一个票证机器人,并且我得到了错误“ UnhandledPromiseRejectionWarning:ReferenceError:类别未定义” 抱歉,这有点短。我使用的是节点版本12.18.4。不知道我还要补充什么 这是我的代码,我做错了什么?

        case "ticket":

                const reason = message.content.split(" ").splice(1).join("");
                
                let SupportCategory = message.guild.channels.cache.get(category => category.name === "Tickets")
    
                if (message.guild.me.hasPermission(`MANAGE_CHANNELS`) && !SupportCategory) {
                    SupportCategory = await message.guild.channels.create('Tickets', {
                        type: category,
                    })
                }
    
    
                if (!message.guild.me.hasPermission(`MANAGE_CHANNELS`) && !SupportCategory) {
                    message.channel.send("I do not have permission to create the category needed for tickets.")
                
                }
    
                if (!message.guild.roles.cache.get(role => role.name === "Support Team")) {
                    await (message.guild.roles.create({
                        name: 'Support Team',
                        color: 'BLUE',
                    }));
                };
    
                let supportrole = message.guild.roles.cache.get(role => role.name === "Support Team")
    
                if (!supportrole) {
                    return message.channel.send("Sorry, but there is no Support Team role in this server.")
                }
    
                if (!reason) {
                    return message.channel.send("Please specify a ticket reason.")
                }
    
                const channelName = `ticket-${message.author.username}-${message.author.discriminator}`
                if (message.guild.channels.cache.get(channel => channel.name === `ticket-${message.author.username.toLowerCase}-${message.author.discriminator}`)) {
                    return message.channel.send("Sorry, but you already have a ticket open.")
        }
        
        message.guild.channels.create(channelName, { parent: SupportCategory.id, topic: `Ticket Owner: ${message.author.id}` }).then(c => {
            const sr = message.guild.roles.cache.get(supportrole)
            const everyone = message.guild.roles.cache.get(role => role.name === "@everyone")
            c.UpdateOverwrite(sr, {
                SEND_MESSAGES: true,
                VIEW_CHANNEL: true,
            });
            c.UpdateOverwrite(everyone, {
                SEND_MESSAGES: false,
                VIEW_CHANNEL: false,
            });
          c.UpdateOverwrite(message,author, {
                SEND_MESSAGES: true,
                VIEW_CHANNEL: true,
            });
            let CreatedTicketEmbed = new MessageEmbed()
            .setColor("BLUE")
            .setTitle("New Support Ticket!")
            .setDescription(`<@${message.author.id}> Your support ticket channel is <#${c.id}>`)
            .setFooter("RagePvP.")
            message.channel.send(CreatedTicketEmbed)
            let GreetEmbed = new MessageEmbed()
            .setColor("BLUE")
            .addField("New Ticket Ticket", `<@${message.author.id}> Thanks for opening a ticket. Help will be with you shortly.`)
            .setTimestamp()
            .setFooter("RagePvP.")
            c.send(GreetEmbed)
        }).catch(console.error);
    break;

2 个答案:

答案 0 :(得分:0)

将节点更新为当前。至于您的错误,似乎在您的

  let SupportCategory = message.guild.channels.cache.get(category => category.name === "Tickets")

消息公会后的“类别”有值吗?似乎没有定义。

答案 1 :(得分:0)

在有类别的地方,您需要放置倾斜的”圆形类别,这样就可以了,我在自己的机器人上为您进行了测试。

  if (message.guild.me.hasPermission(`MANAGE_CHANNELS`) && !SupportCategory) {
                    SupportCategory = await message.guild.channels.create('Tickets', {
                        type: `category`,
                    })
                }