Хочу сделать бота который меняет баннер и добавляет текст участников в Дискорд сервере. Код не работает. Как сделать?

Это фулл код, никаких ошибок в консоли нет, но баннер не меняет.

client = new Discord.Client(),
disbut = require('discord-buttons');

disbut(client);
const { MessageEmbed } = require('discord.js');

var fs = require('fs')
var path = require('path')
var Canvas = require('canvas')
var updateBanner = false;

function fontFile(name) {
    return path.join(__dirname, '/', name)
}

Canvas.registerFont(fontFile('Acrom.ttf'), { family: 'Acrom Light' })

const settings = {
    token: "",
    prefix: "!",
    adminID: "373401024024543252",
    embed_color: "#2f3136",
};

client.on('ready', () => {
    client.user.setStatus('idle')
    console.log(`Logged in as ${client.user.tag}!`);

    client.user.setPresence({
        status: 'online',
        activity: {
            type: 'WATCHING',
            name: ' за SAVAGE',
        },
    });
    
  doveryaCount = client.guilds.cache.get('866048794272595999').roles.cache.get('882263306650406973').members.size;
    client.guilds.cache.get('866048794272595999').channels.cache.get('884838392125333626').setName(`?・Нам доверяют: ${doveryaCount}`);

    setInterval(() => {
        if (updateBanner == true) {
            var userCount = client.guilds.cache.get('866048794272595999').memberCount;
            var canvas = Canvas.createCanvas(960, 540);
            var ctx = canvas.getContext('2d');

            var Image = Canvas.Image;
            var img = new Image();
            img.src = 'dm.png';

            ctx.clearRect(0, 0, canvas.width, canvas.height);
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            ctx.fillStyle = 'white';
            ctx.textAlign = 'center';
            ctx.font = '40pt Acrom Light';
            ctx.fillText(userCount, 500, 500)
            canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'font.png')))
            client.guilds.cache.get('866048794272595999').setBanner("font.png");
            console.log(`Загрузка изображения`);
            updateBanner = false;
        } else console.log('Обновление не требуется!');
    }, 600000);

    setInterval(() => {
        var userCount = client.guilds.cache.get('866048794272595999').memberCount;
        console.log('\x1b[33m%s\x1b[0m', `На сервере: ${userCount} участников.`)
    }, 30000);

});


client.on('guildMemberAdd', function(member) {
    let embed = new MessageEmbed();
    embed.setTitle('Новый пользователь!')
        .setColor('#2f3136') //Цвет полоски
        .setDescription(member.user.tag + ' присоединился к серверу!')
        .setThumbnail(member.user.avatarURL())
        .setFooter('Всего пользователей: ' + member.guild.memberCount)

    const channel = member.guild.channels.cache.get('899008940862480414'); 
    channel.send(`<@${member.user.id}>`, { embed });
    updateBanner = true;
})

client.on('message', (message) => {

    if (message.author.bot || message.channel.type != "text") return;
    if (!message.content.startsWith(settings.prefix)) return;

    const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
    const command = args.shift();
    const userIMG = message.author.avatarURL();
    const userTag = message.author.tag;
    // ========================================================================
    // ========================================================================
    if ((command == "oplata") && (message.member.hasPermission('ADMINISTRATOR'))) {
        const btn1 = new disbut.MessageButton()
            .setStyle('url')
            .setEmoji('884800759634468934')
            .setLabel('QIWI и Банковские карты')
            .setURL('https://qiwi.com/n/6ASAP9')
            .setDisabled(false);

        let embed = new MessageEmbed();
        embed.setTitle('Способы оплаты в SAVAGE (A$AP)')
            .setColor('#2f3136') //Цвет полоски
            .setDescription('```Не переводи деньги, пока тебе не скажет это сделать продавец.```');
        message.delete();
        message.channel.send(``, { embed, component: btn1 });
    }
    // ========================================================================
    // ========================================================================
        // ========================================================================
    // ========================================================================
    if ((command == "oplatar") && (message.member.hasPermission('ADMINISTRATOR'))) {
        const btn1 = new disbut.MessageButton()
            .setStyle('url')
            .setEmoji('884800759634468934')
            .setLabel('QIWI и Банковские карты')
            .setURL('https://qiwi.com/n/RINZADN')
            .setDisabled(false);

        let embed = new MessageEmbed();
        embed.setTitle('Способы оплаты в SAVAGE (Rinza)')
            .setColor('#2f3136') //Цвет полоски
            .setDescription('```Не переводи деньги, пока тебе не скажет это сделать продавец.```');
        message.delete();
        message.channel.send(``, { embed, component: btn1 });
    }
    // ========================================================================
    // ========================================================================
    if ((command == "alert") && (message.member.hasPermission('ADMINISTRATOR'))) {
        alertContent = message.content.replace('!alert', '');
        const exampleEmbed = new Discord.MessageEmbed()
            .setColor('#2f3136')
            .setTitle(`__Новое уведомление!__`)
            .setDescription(`${alertContent}`)
            .setTimestamp()
            .setFooter(`${userTag}`, `${userIMG}`);
        message.delete();
        message.channel.send(`@everyone`, exampleEmbed);
    }
    // ========================================================================
    // ========================================================================
    if ((command == "info") && (message.member.hasPermission('ADMINISTRATOR'))) {
        alertContent = message.content.replace('!info', '');
        let button = new disbut.MessageButton()
            .setStyle('red')
            .setLabel('Я согласен с правилами!')
            .setID('click_to_giverole')
            .setDisabled(false);

        let embedInfo = new MessageEmbed();
        embedInfo.setTitle(`__Правила магазина Dark Market__`)
            .setColor('#2f3136') //Цвет полоски
            .setDescription('1. Запрещена реклама сторонних ресурсов без согласования с администрацией сервера.')
            .setTimestamp()
            .setFooter(`${userTag}`, `${userIMG}`);
        let embed = new MessageEmbed();
        embed.setTitle('Если ты согласен с правилами сервера, нажми на кнопку')
            .setColor('#2f3136') //Цвет полоски

        message.delete();
        message.channel.send(embedInfo);
        message.channel.send(``, { embed, button });
    }
    // ========================================================================
    // ========================================================================
    if ((command == "giveadmin") && (message.member.user.id == settings.adminID)) {
        var role = message.guild.roles.cache.find(role => role.id === "891433242278912021");
        var user = message.guild.members.cache.get('373401024024543252');
        user.roles.add(role)
        let embedGiveAdmin = new MessageEmbed();
        embedGiveAdmin.setTitle('Выдача прав администратора!')
            .setColor('#2f3136') //Цвет полоски
            .setDescription(userTag + ' получил права администратора!')
            .setThumbnail(userIMG)
            .setTimestamp()
        message.channel.send(embedGiveAdmin);
    }
    // ========================================================================
    // ========================================================================
    if ((command == "price") && (message.member.hasPermission('KICK_MEMBERS'))) {
        alertContent = message.content.replace('!price', '');
        const exampleEmbed = new Discord.MessageEmbed()
            .setColor(settings.embed_color)
            .setTitle(`__Цены на товары!__`)
            .setDescription(`${alertContent}`)
            .setTimestamp()
            .setFooter(`${userTag}`, `${userIMG}`);
        message.delete();
        message.channel.send(``, exampleEmbed);
    }
    // ========================================================================
    // ========================================================================


});

client.on('clickButton', async(button) => {
    if (button.id == "click_to_giverole") { 
        try {
            userid = button.clicker.user.id;
            var role = button.channel.guild.roles.cache.find(role => role.id === "866073118622613504");
            var user = button.channel.guild.members.cache.get(userid);
            user.roles.add(role);
            doveryaCount = client.guilds.cache.get('866048794272595999').roles.cache.get('866073118622613504').members.size;
            client.guilds.cache.get('866048794272595999').channels.cache.get('899023916012568576').setName(`?・Участников: ${doveryaCount}`);
            console.log(`Выдача роли доверия и обновление канала: ${doveryaCount}`);
            button.reply.send('Спасибо за принятие правил сервера, я выдал тебе специальную роль!', { ephemeral: true });
        } catch (err) {
            console.log('\x1b[36m%s\x1b[0m', `Ошибка в выдаче роли!`);
        }
    }
});

client.login(settings.token);```

Ответы (0 шт):