async makeVote(channel, playersToVote, inGame = true, time = 20000, showResults = true, customTitle = '') {
playersToVote = this.shuffleArray(playersToVote);
customTitle = 'x';
let roleAlive = this.#bot.guild.roles.cache.find((x) => x.id === config.roles.alive.id);
const playerVoteListIds = playersToVote.map((player) => player.id);
const pool = new Pool(playerVoteListIds);
const voteEmbedContent = this.getVoteEmbedContent(pool);
const voteSelectMenu = new ActionRowBuilder().addComponents(
new SelectMenuBuilder()
.setCustomId('x')
.setPlaceholder('x')
.addOptions(
playersToVote.map((player) => {
return {
label: `${player.friendlyName}#${player.discordTag}`,
value: String(player.id),
};
})
)
);
const voteEmbed = this.#bot.createEmbed('vote', customTitle, voteEmbedContent);
const voteMessage = await channel.send({
content: roleAlive?.toString() ?? '',
embeds: [voteEmbed],
components: [voteSelectMenu],
});
this.#bot.playVotingMusic(config.channels.rozgrywkaVoice.id);
pool.messageId = voteMessage.id;
this.pools.push(pool);
setTimeout(async () => {
this.pools = this.pools.filter((p) => p.messageId !== pool.messageId);
await voteMessage.edit({ embeds: [this.getVoteEmbedResult(pool)], components: [] });
this.#bot.stopVotingMusic();
}, time);
}
shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
let temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}```
```js
playVotingMusic(voiceChannelId : string) {
const connection = joinVoiceChannel({
channelId: voiceChannelId,
guildId: this.guild.id,
adapterCreator: this.guild.voiceAdapterCreator
});
const player = createAudioPlayer({
behaviors: {
noSubscriber: NoSubscriberBehavior.Pause
}
});
const resource = createAudioResource('./audio/elevator.mp3', { inlineVolume: true });
resource.volume?.setVolume(0.1);
player.play(resource);
connection.subscribe(player);
}```
```js
stopVotingMusic() {
const connection = getVoiceConnection(this.guild.id);
connection?.destroy();
}```