Search code examples
javascriptnode.jsdiscord.js

I don't get any errors but when I enter the room my bot doesn't create a new channel


const Discord = require("discord.js")
const TOKEN = "I WAS WRITE MT TOKEN"


const { Client, GatewayIntentBits } = require('discord.js');
const { MemberFetchNonceLength } = require("discord.js/src/errors/ErrorCodes");

const client = new Discord.Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.GuildMembers,
    GatewayIntentBits.DirectMessageTyping,
  ]
})

  client.on("ready", () => {
    console.log(`${client.user.tag} kullanımda`)
  })

  client.on("voiceStateUpdate", async (oldState, newState) => {
    const user = await client.user.fetch(newState.id);
    const member = newState.guild.member(user);

    if (!oldState.channel && newState.channel.id === "I WAS WRITE MY CHANNEL ID"){
        const channel = await newState.guild.channel.create(user.tag, {
            type:"voice",
            parent: newState.channel.parent,
        });
        member.voice.setChannel(channel);
        voiceCollection.set(user.id, channel.id);
    } else if(!newState.channel){
        if(oldState.channelId === voiceCollection.get(newState.id))
        return oldState.channel.delete();
    }
    });

  client.login(TOKEN)

I wanted to make a "Join to create" bot. Actually, the bot works and I don't get any errors but when I enter the room it doesn't create a new channel and put me in that channel.


Solution

  • You'll need to add the GuildVoiceStates intent to your array:

    const client = new Discord.Client({
      intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
        GatewayIntentBits.GuildMembers,
        GatewayIntentBits.DirectMessageTyping,
        GatewayIntentBits.GuildVoiceStates,
      ]
    })
    

    Without that, the voiceStateUpdate event won't fire.