voice system

I have this code:
const { ChannelType, ButtonInteraction, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionFlagsBits, ModalBuilder, TextInputBuilder, TextInputStyle, CommandInteraction, Client, joinVoiceChannel } = require("discord.js");
const UserVoice = require("../../Models/UserVoice");
const VoiceSchema = require("../../Models/VoiceSchema");

async function checkEmptyVoiceChannel(voice_channel) {
if (voice_channel && voice_channel.members.size === 0) {
await voice_channel.delete();
console.log(`Deleted voice channel ${voice_channel.name} (${voice_channel.id}) because it was empty`);
}
}

module.exports = {
name: "voiceStateUpdate",

async execute(oldVoiceState, newVoiceState) {
const VoiceData = await VoiceSchema.findOne({ GuildID: newVoiceState.guild.id });
const UserData = await UserVoice.findOne({ UserID: newVoiceState.member.id });
let voice_channel;

if (newVoiceState.channel && newVoiceState.channel.id === VoiceData.ChannelID) {
voice_channel = await newVoiceState.guild.channels.create({
name: `${newVoiceState.member.displayName}-voice`,
type: ChannelType.GuildVoice,
parent: newVoiceState.channel.parent
})
await UserVoice.findOneAndUpdate(
{ UserID: newVoiceState.member.id },
{
ChannelID: voice_channel.id,
},
{
new: true,
upsert: true,
}
)

await newVoiceState.member.voice.setChannel(voice_channel);

} else if (oldVoiceState.channel.id === voice_channel.id && oldVoiceState.channel.members.size === 0) {
await checkEmptyVoiceChannel(oldVoiceState.channel);
}

},
};
const { ChannelType, ButtonInteraction, EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, PermissionFlagsBits, ModalBuilder, TextInputBuilder, TextInputStyle, CommandInteraction, Client, joinVoiceChannel } = require("discord.js");
const UserVoice = require("../../Models/UserVoice");
const VoiceSchema = require("../../Models/VoiceSchema");

async function checkEmptyVoiceChannel(voice_channel) {
if (voice_channel && voice_channel.members.size === 0) {
await voice_channel.delete();
console.log(`Deleted voice channel ${voice_channel.name} (${voice_channel.id}) because it was empty`);
}
}

module.exports = {
name: "voiceStateUpdate",

async execute(oldVoiceState, newVoiceState) {
const VoiceData = await VoiceSchema.findOne({ GuildID: newVoiceState.guild.id });
const UserData = await UserVoice.findOne({ UserID: newVoiceState.member.id });
let voice_channel;

if (newVoiceState.channel && newVoiceState.channel.id === VoiceData.ChannelID) {
voice_channel = await newVoiceState.guild.channels.create({
name: `${newVoiceState.member.displayName}-voice`,
type: ChannelType.GuildVoice,
parent: newVoiceState.channel.parent
})
await UserVoice.findOneAndUpdate(
{ UserID: newVoiceState.member.id },
{
ChannelID: voice_channel.id,
},
{
new: true,
upsert: true,
}
)

await newVoiceState.member.voice.setChannel(voice_channel);

} else if (oldVoiceState.channel.id === voice_channel.id && oldVoiceState.channel.members.size === 0) {
await checkEmptyVoiceChannel(oldVoiceState.channel);
}

},
};
But when i leave my channel i get an error: TypeError: Cannot read properties of undefined (reading 'id') at Object.execute (D:\job\Discord\Salvation\Events\Voice\voiceStateUpdate.js:39:63) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Emitted 'error' event on Client instance at: at emitUnhandledRejectionOrErr (node:events:394:10) at process.processTicksAndRejections (node:internal/process/task_queues:84:21)
5 Replies
Unknown User
Unknown User16mo ago
Message Not Public
Sign In & Join Server To View
tenfy
tenfy16mo ago
} else if (oldVoiceState.channel.id === voice_channel.id && oldVoiceState.channel.members.size === 0) {
} else if (oldVoiceState.channel.id === voice_channel.id && oldVoiceState.channel.members.size === 0) {
Unknown User
Unknown User16mo ago
Message Not Public
Sign In & Join Server To View
tenfy
tenfy16mo ago
Ty it helped me
Unknown User
Unknown User16mo ago
Message Not Public
Sign In & Join Server To View