mirror of
https://github.com/BluemediaDev/muse.git
synced 2025-05-10 04:01:37 +02:00
Add auto disconnect
This commit is contained in:
parent
32cb3ca4ae
commit
ac21b5657b
5 changed files with 45 additions and 19 deletions
|
@ -1,6 +1,14 @@
|
|||
import {Guild, VoiceChannel} from 'discord.js';
|
||||
|
||||
export const getMostPopularVoiceChannel = (guild: Guild, min = 0): VoiceChannel => {
|
||||
export const getSizeWithoutBots = (channel: VoiceChannel): number => channel.members.array().reduce((s, member) => {
|
||||
if (!member.user.bot) {
|
||||
s++;
|
||||
}
|
||||
|
||||
return s;
|
||||
}, 0);
|
||||
|
||||
export const getMostPopularVoiceChannel = (guild: Guild): [VoiceChannel, number] => {
|
||||
interface PopularResult {
|
||||
n: number;
|
||||
channel: VoiceChannel | null;
|
||||
|
@ -9,18 +17,16 @@ export const getMostPopularVoiceChannel = (guild: Guild, min = 0): VoiceChannel
|
|||
const voiceChannels: PopularResult[] = [];
|
||||
|
||||
for (const [_, channel] of guild.channels.cache) {
|
||||
if (channel.type === 'voice' && channel.members.size >= min) {
|
||||
if (channel.type === 'voice') {
|
||||
const size = getSizeWithoutBots(channel as VoiceChannel);
|
||||
|
||||
voiceChannels.push({
|
||||
channel: channel as VoiceChannel,
|
||||
n: channel.members.size
|
||||
n: size
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (voiceChannels.length === 0) {
|
||||
throw new Error('No voice channels meet minimum size');
|
||||
}
|
||||
|
||||
// Find most popular channel
|
||||
const popularChannel = voiceChannels.reduce((popular: PopularResult, elem: PopularResult) => {
|
||||
if (elem.n > popular.n) {
|
||||
|
@ -31,7 +37,7 @@ export const getMostPopularVoiceChannel = (guild: Guild, min = 0): VoiceChannel
|
|||
}, {n: -1, channel: null});
|
||||
|
||||
if (popularChannel.channel) {
|
||||
return popularChannel.channel;
|
||||
return [popularChannel.channel, popularChannel.n];
|
||||
}
|
||||
|
||||
throw new Error();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue