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 }, )