const canvas = createCanvas(1000, 333); const ctx = canvas.getContext('2d'); const background = await loadImage('https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQPN6ItBzkRXrfdWQ4nSJ-W_645bw5DRcaRTA&usqp=CAU'); ctx.drawImage(background, 0, 0, canvas.width, canvas.height); registerFont('Helvetica.ttf', { family: 'Helvetica' }); ctx.beginPath(); ctx.lineWidth = 4; ctx.strokeStyle = '#ffffff'; ctx.globalAlpha = 0.2; ctx.fillStyle = '#303030'; ctx.fill(); ctx.globalAlpha = 1; roundRect(ctx, 317, 216, 641, 52.5, 28, true); ctx.fillStyle = '#ffffff'; ctx.globalAlpha = 0.6; roundRect(ctx, 317, 216, ((100 / (neededXP)) * exp) * 6.41, 52.5, 28, true, 0); ctx.globalAlpha = 1; ctx.font = '30px Helvetica Not-Rotated'; ctx.textAlign = 'center'; ctx.fillStyle = '#ffffff'; ctx.fillText(`${exp}` + `/${neededXP} XP`, 634, 254); // ctx.textAlign = 'left'; // ctx.fillText(name, 300, 120); // ctx.font = '50px Arial'; // ctx.fillText('Level:', 300, 180); // ctx.fillText(level, 470, 180); ctx.closePath(); ctx.beginPath(); ctx.arc(170, 160, 120, 0, Math.PI * 2, true); ctx.lineWidth = 6; ctx.strokeStyle = '#ffffff'; ctx.stroke(); ctx.closePath(); ctx.clip(); const avatar = await loadImage(user.displayAvatarURL({ format: 'jpg' })); ctx.drawImage(avatar, 40, 40, 250, 250); const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'rank.png'); if (args.join(' ').toLowerCase().includes('noembed')) { message.channel.send(attachment); message.channel.stopTyping(); } else { const rankEmbed = new Discord.MessageEmbed() .setColor(colours.auxcrd) .setAuthor(`Rank: ${rank}, Level: ${level}, XP: ${exp}`, user.displayAvatarURL()) .setImage('attachment://rank.png'); message.channel.send({ files: [attachment], embed: rankEmbed }); message.channel.stopTyping(); } }, };