Home > Back-end >  How to create a private channel only the user and the bot can see in Discord.js v14?
How to create a private channel only the user and the bot can see in Discord.js v14?

Time:11-25

I tried to create a private channel in Discord.js v14 but my code returns an error.

Here is the relevant part of my code:

else if (interaction.customId === 'donatid') {
    if(interaction.values[0] == '01'){
     const everyoneRole = interaction.guild.roles.everyone;
     const name = interaction.user.tag;
     interaction.guild.channels.create(name, 'text') // i think problem over here
     .then(r => {
         r.overwritePermissions(interaction.author.id, { VIEW_CHANNEL: true });
         r.overwritePermissions(client.id, { VIEW_CHANNEL: true });
         r.overwritePermissions(everyoneRole, { VIEW_CHANNEL: false });
       })
   .catch(console.error);

   }
};

And the error:

DiscordAPIError\[50035\]: Invalid Form Body

CodePudding user response:

There are a couple of errors in your code. In v14, create() accepts an options object and "text" is not a valid type anymore. You should import the ChannelType enums and use ChannelType.GuildText for this.

There is no interaction.author. There is an interaction.user or an interaction.member, so you can use those if you want to use the author's ID.

There is no client.id either. You can grab the bot's ID, using client.user.id though.

Also, you could add the permissions inside the create method as an option so you don't have to use that then. See the working code below:

const { ChannelType, PermissionFlagsBits } = require('discord.js');

//...
  interaction.guild.channels.create({
    name: interaction.user.tag,
    type: ChannelType.GuildText,
    permissionOverwrites: [
      {
        id: interaction.guild.roles.everyone,
        deny: [PermissionFlagsBits.ViewChannel],
      },
      {
        id: interaction.user.id,
        allow: [PermissionFlagsBits.ViewChannel],
      },
      {
        id: client.user.id,
        allow: [PermissionFlagsBits.ViewChannel],
      },
    ],
  });
  • Related