Ожидание действует только в asyn c функция Canvas Discord JS - PullRequest
2 голосов
/ 17 апреля 2020

Я довольно новичок в кодировании и следовал онлайн-уроку о том, как использовать canvas для манипулирования изображениями, но я получаю эту ошибку, извините, что беспокою! Любая помощь приветствуется

if (message.author.bot) return;
    msg = message.content.toLowerCase();
    if(msg.includes("test")) {
        const sayMessage = message.content.split(' ').slice(2).join(' ')

        const canvas = Canvas.createCanvas(700, 250);
        const ctx = canvas.getContext('2d');

        const background = await Canvas.loadImage('./wallpaper.jpg');
        ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

        ctx.strokeStyle = '#74037b';
        ctx.strokeRect(0, 0, canvas.width, canvas.height);

        ctx.font = applyText(canvas, sayMessage);
        ctx.fillStyle = '#ffffff';
        ctx.fillText(sayMessage, canvas.width / 2.5, canvas.height / 1.8);

        ctx.beginPath();
        ctx.arc(125, 125, 100, 0, Math.PI * 2, true);
        ctx.closePath();
        ctx.clip();

        const avatar = await Canvas.loadImage(member.user.displayAvatarURL({ format: 'jpg' }));
        ctx.drawImage(avatar, 25, 25, 200, 200);

        const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'test.png');

        channel.send(attachment);
    } 

Ответы [ 2 ]

5 голосов
/ 17 апреля 2020

именно то, что говорит ошибка. Функция, внутри которой вы ожидаете любую другую функцию, должна быть асинхронной c.

например:

async function wait() {
    await somefunction() // correct because function is async
}

Однако

function wait() {
    await somefunction() // error
}
2 голосов
/ 17 апреля 2020

Скорее всего, вам нужно добавить async к вашему .onMessage событию. Это должно выглядеть примерно так:

bot.on('message', async message => {
    //do your commands here
})

Обратите внимание на async перед частью message => {}. Вот что позволяет вам использовать await в событии onMessage.

...