【问题标题】:Discord.js v 12.5.1 overwriting permissionsDiscord.js v 12.5.1 覆盖权限
【发布时间】:2021-03-16 19:14:09
【问题描述】:

我有这个错误的问题:

UnhandledPromiseRejectionWarning:TypeError [INVALID_TYPE]:已提供 参数既不是用户也不是角色。

我几乎尝试了所有我知道的修复方法,试图寻找 api 来发现问题所在,但我没有得到任何解决方案。

代码如下:

const Discord = require('discord.js')
const { MessageEmbed } = require('discord.js');
const config = require('../../config.json');

module.exports = {
    name: "new",
    category: "tickets",
    description: "Vytvorí nový ticket",
    usage: "[príkaz | alias]",
    run: async (client, message, args) => {
        message.delete();
        let [parent, support, supervisor] = [config.tickets.category, message.guild.roles.cache.get(config.tickets.roles.support), message.guild.roles.cache.get(config.tickets.roles.supervisor)];
        let co = true;

        function check() {
            let channels = message.guild.channels.cache.filter(ch => ch.type === 'text' && ch.name.startsWith('ticket-'));
            channels.forEach(channel => {
                if(channel.topic.includes(message.author.id)) co = false;
            });
        }
        check();

        if(!co) {
            let embed = new MessageEmbed().addField(':x: Error 404', 'Už máš otvorený ticket. Prosím ukonči ho predtým ako vytvoríš ďalší!').setColor('RED');
            return message.channel.send({embed: embed});
        }

        let ticket = await message.guild.channels.create(`ticket-${message.author.username}`, 'text');

        let ch = await message.guild.channels.cache.find(channel => channel.id === parent);
        if(ch && ch.type === 'category') ticket.setParent(ch.id);
        
        ticket.setTopic(message.author.id);

        ticket.overwritePermissions([message.guild.roles.everyone, { SEND_MESSAGES: false, VIEW_CHANNEL: false, READ_MESSAGE_HISTORY: false }]);
        ticket.overwritePermissions([message.author.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true }]);
        if(support) ticket.overwritePermissions([support.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true }]);
        if(supervisor) ticket.overwritePermissions([supervisor.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true, MANAGE_MESSAGES: true }]);
        let embed = new MessageEmbed().setColor('BLUE').setAuthor(`Vitaj ${message.author.tag}`, message.author.displayAvatarURL).setDescription(config.tickets.messages.welcome);
        ticket.send({embed: embed});

        embed = new MessageEmbed().setColor('GREEN').addField(`✅ Ticket Vytvorený`, `Úspešne vytvorený tvoj ticket <#${ticket.id}>`);
        message.channel.send({embed: embed});
    }
};

问题是这段代码不会覆盖权限。

ticket.overwritePermissions([message.guild.roles.everyone, { SEND_MESSAGES: false, VIEW_CHANNEL: false, READ_MESSAGE_HISTORY: false }]);
ticket.overwritePermissions([message.author.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true }]);
if(support) ticket.overwritePermissions([support.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true }]);
if(supervisor) ticket.overwritePermissions([supervisor.id, { SEND_MESSAGES: true, VIEW_CHANNEL: true, READ_MESSAGE_HISTORY: true, MANAGE_MESSAGES: true }]);

对此有什么帮助吗?将不胜感激。

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    将“overwritePermissions()”替换为“updateOverwrite()”

    【讨论】:

    • 用第一行代码提交这个问题后试了一下。它有效,但在全部更换后我得到了同样的错误。所以然后我试着把它放回只有第一个代码,但它没有用。我不知道发生了什么,我不能让它再次工作,因为它在第一次尝试时工作。然后我也尝试删除缓存,但没有任何改变。
    【解决方案2】:

    所以在发现并尝试了每一件事之后,我得到了修复。只是为将寻求帮助的人发布此信息。错误是每个overwritePermissions() 都尝试为自己覆盖权限,并且语法也很糟糕。只需将其替换为以下代码,一切正常。

    ticket.overwritePermissions([
                {
                    id: message.guild.roles.everyone.id,
                    deny: ['VIEW_CHANNEL'],
                },
                {
                    id: message.author.id,
                    allow: ['VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', 'SEND_MESSAGES'],
                },
                {
                    id: support.id,
                    allow: ['VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', 'SEND_MESSAGES'],
                },
    
                {
                    id: supervisor.id,
                    allow: ['VIEW_CHANNEL', 'READ_MESSAGE_HISTORY', 'SEND_MESSAGES', 'MANAGE_MESSAGES'],
                },
            ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2022-01-20
      • 2020-12-02
      相关资源
      最近更新 更多