【问题标题】:Why am I getting: TypeError: channel.updateOverwrite is not a function为什么我得到:TypeError:channel.updateOverwrite 不是函数
【发布时间】:2022-01-02 08:23:51
【问题描述】:

我在 discord.js 上关注 tutorial,制作票务机器人。我已经仔细检查过,我仍然收到同样的错误:

TypeError:channel.updateOverwrite 不是函数

我查看了我能找到的所有 StackOverflow 问题,但没有一个对我有用。我也在 SO 之外进行了更深入的探索,仍然没有帮助。这是我的代码:

module.exports = {
    name: 'ticket',
    description: 'Open a ticket!',
    async execute(client, message, args, cmd, Discord) {
        // creates tickets
        let channel = await message.guild.channels.create(
            `ticket: ${message.author.tag}`,
            { type: 'text' }
        );
        await channel.setParent('912495738947260446');

        // updates channel perms

        channel.updateOverwrite(message.guild.id, {
            SEND_MESSAGE: false,
            VIEW_CHANNEL: false
        });

        channel.updateOverwrite(message.author, {
            SEND_MESSAGE: true,
            VIEW_CHANNEL: true
        });

        const reactionMessage = await channel.send('Thanks for opening a ticket! A staff member will be with you shortly. While you are here, please tell us why you opened this ticket.');

        try {
            await reactionMessage.react("????");
            await reactionMessage.react("????️");
        } catch(err) {
            channel.send('Error sending emojis! Please tell a developer to check the console!');
            throw err;
        }

        const collector = reactionMessage.createReactionCollector((reaction, user) => message.guild.members.cache.find((member) => member.id === user.id).hasPermission('ADMINISTRATOR'), {dispose: true});

        collector.on('collect', (reaction, user) => {
            switch (reaction.emoji.name) {
                case "????":
                    channel.updateOverwrite(message.author, { SEND_MESSAGE: false, VIEW_CHANNEL: false});
                    channel.setname(`???? ${channel.name}`)
                    break;
                case "????️":
                    channel.send('Deleting Channel in 10 seconds!');
                    setTimeout(() => channel.delete(), 10000);
                    break;
            }
        });
    }
}

【问题讨论】:

标签: javascript node.js discord discord.js


【解决方案1】:

您似乎正在使用 discord.js v13 并尝试一些旧代码。在 v13 中删除了 channel#updateOverwrite() 方法,而在以前的版本中 channel#permissionOverwritescollection of overwrites,在 v13 中是 PermissionOverwriteManager。这意味着,您应该使用它的.edit() 方法来更新覆盖:

channel.permissionOverwrites.edit(
  message.author, 
  { SEND_MESSAGES: false, VIEW_CHANNEL: false },
)

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多