[Solved] Voice States cleared

Hey, I noticed that when I get the voice channel, check for the members in the channel I only get the bot member while it should return me and the bot user. I have the feeling that this is bcs of my makeCache and sweepers settings. This is my config:
makeCache: Discord.Options.cacheWithLimits({
ApplicationCommandManager: 0,
BaseGuildEmojiManager: 0,
GuildEmojiManager: 0,
GuildEmojiRoleManager: 0,
GuildBanManager: 0,
GuildInviteManager: 0,
GuildStickerManager: 0,
StageInstanceManager: 0,
PresenceManager: 0,
GuildApplicationCommandManager: 0,
ApplicationCommandPermissionsManager: 0,
ThreadMemberManager: 0,
MessageManager: 0,
ThreadManager: 0,
VoiceStateManager: {
maxSize: 0,
keepOverLimit: (voiceState) => typeof voiceState.channelId === "string"
},
UserManager: {
maxSize: 250_000,
},
GuildMemberManager: {
maxSize: 250_000,
}
}),
sweepers: {
messages: {
interval: 60,
filter: Discord.Sweepers.filterByLifetime({
lifetime: 150,
getComparisonTimestamp: (message) => message.editedTimestamp ?? message.createdTimestamp,
}),
},
users: {
interval: 60,
filter: () => (user) => user.id !== user.client.user?.id,
},
guildMembers: {
interval: 60,
filter: () => (member) => member.id !== member.client.user?.id && (member.voice && member.voice.channelId),
},
threads: {
interval: 60,
filter: () => (thread) => thread.archived,
},
voiceStates: {
interval: 60,
filter: () => (voiceState) => typeof voiceState.channelId === "string"
},
}
makeCache: Discord.Options.cacheWithLimits({
ApplicationCommandManager: 0,
BaseGuildEmojiManager: 0,
GuildEmojiManager: 0,
GuildEmojiRoleManager: 0,
GuildBanManager: 0,
GuildInviteManager: 0,
GuildStickerManager: 0,
StageInstanceManager: 0,
PresenceManager: 0,
GuildApplicationCommandManager: 0,
ApplicationCommandPermissionsManager: 0,
ThreadMemberManager: 0,
MessageManager: 0,
ThreadManager: 0,
VoiceStateManager: {
maxSize: 0,
keepOverLimit: (voiceState) => typeof voiceState.channelId === "string"
},
UserManager: {
maxSize: 250_000,
},
GuildMemberManager: {
maxSize: 250_000,
}
}),
sweepers: {
messages: {
interval: 60,
filter: Discord.Sweepers.filterByLifetime({
lifetime: 150,
getComparisonTimestamp: (message) => message.editedTimestamp ?? message.createdTimestamp,
}),
},
users: {
interval: 60,
filter: () => (user) => user.id !== user.client.user?.id,
},
guildMembers: {
interval: 60,
filter: () => (member) => member.id !== member.client.user?.id && (member.voice && member.voice.channelId),
},
threads: {
interval: 60,
filter: () => (thread) => thread.archived,
},
voiceStates: {
interval: 60,
filter: () => (voiceState) => typeof voiceState.channelId === "string"
},
}
3 Replies
d.js toolkit
d.js toolkit3w ago
- What's your exact discord.js npm list discord.js and node node -v version? - Not a discord.js issue? Check out #other-js-ts. - Consider reading #how-to-get-help to improve your question! - Explain what exactly your issue is. - Post the full error stack trace, not just the top part! - Show your code! - Issue solved? Press the button!
sean
seanOP3w ago
No description
No description
sean
seanOP3w ago
I get the channel with
const channel = await client.channels.fetch(player.textChannelId).catch(() => {});
const channel = await client.channels.fetch(player.textChannelId).catch(() => {});
Didnt saw a other way to check if the voiceState is actually connected oh True :OMEGALUL: Beside that do you see anything else weird? Guilds GuildVoiceStates GuildMessages Are the ones I use I also need to say this only happens after some time being in voice with the bot. When I join and check 2 seconds after that join or so I see myself in the .members collection Changed the makeCache and sweepers to
guildMembers: {
interval: 60,
filter: () => (member) => member.id !== member.client.user?.id && member.voice.channelId === null,
},
voiceStates: {
interval: 60,
filter: () => (voiceState) => voiceState.channelId === null
},
guildMembers: {
interval: 60,
filter: () => (member) => member.id !== member.client.user?.id && member.voice.channelId === null,
},
voiceStates: {
interval: 60,
filter: () => (voiceState) => voiceState.channelId === null
},
and
VoiceStateManager: {
maxSize: 0,
keepOverLimit: (voiceState) => voiceState.channelId !== null
},
GuildMemberManager: {
maxSize: 250_000,
keepOverLimit: (member) => member.id === member.client.user?.id || member.voice.channelId !== null
}
VoiceStateManager: {
maxSize: 0,
keepOverLimit: (voiceState) => voiceState.channelId !== null
},
GuildMemberManager: {
maxSize: 250_000,
keepOverLimit: (member) => member.id === member.client.user?.id || member.voice.channelId !== null
}
Thanks for the mention, I wanted to update this message when I'm fully sure it works now. Yep this one was indeed wrong :OMEGALUL: I kinda forgot how the filter handles the boolean

Did you find this page helpful?