I’m following a tutorial on discord.js, making a ticket bot. I have double-checked and I am still getting the same error:
TypeError: channel.updateOverwrite is not a function
I’ve looked over all the StackOverflow questions that I could find, but none has worked for me. I have also explored a little deeper outside of SO, still no help. Here is my code:
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;
}
});
}
}
Advertisement
Answer
It seems you’re using discord.js v13 and trying some old code. In v13 the channel#updateOverwrite() method is removed and while in previous version channel#permissionOverwrites was a collection of overwrites, in v13 it’s a PermissionOverwriteManager. It means, you should use its .edit() method to update overwrites:
channel.permissionOverwrites.edit(
message.author,
{ SEND_MESSAGES: false, VIEW_CHANNEL: false },
)