Бот для отображения количества людей в голосовых каналах на сервере, при подключении в голосовой канал число увеличивается, но при отключении от канала не уменьшается.
const Discord = require('discord.js');
const Canvas = require('canvas')
const fs = require('fs').promises;
const client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILD_VOICE_STATES,
Discord.Intents.FLAGS.GUILDS
]
});
client.on('ready', () => {
console.log('ready');
setInterval(changeBanner, 30000)
});
async function changeBanner() {
const images = await fs.readdir('images');
const guild = client.guilds.cache.get('ID СЕРВЕРА');
const number = await getVoiceMembers(guild);
const banner = await editBanner(image, getVoiceMembers(guild));
await guild.setBanner(banner);
}
function getVoiceMembers(guild) {
let count = 0;
guild.voiceStates.cache.each(() => count++)
return count
}
async function editBanner(image, number) {
const canvas = Canvas.createCanvas(960, 540);
const context = canvas.getContext('2d');
const background = await Canvas.loadImage(image);
context.drawImage(background, 0, 0, canvas.width, canvas.height);
context.font = '130px bebas neue bold';
context.fillStyle = '#000';
context.fillText(`${number}`, 240, 470);
context.fillStyle = '#fff';
context.fillText(`${number}`, 238, 468);
return canvas.toBuffer();
}
client.login("token")