canvas why

This commit is contained in:
Daniel Odendahl Jr
2017-07-13 19:40:23 +00:00
parent 1e9cf3895f
commit 341060ca08
15 changed files with 139 additions and 239 deletions
Binary file not shown.
+6 -14
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class YearsCommand extends Command {
@@ -36,19 +34,13 @@ module.exports = class YearsCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(856, 569);
const canvas = createCanvas(856, 569);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 461, 127, 200, 200);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', '3000-years.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', '3000-years.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 461, 127, 200, 200);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: '3000-years.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+7 -15
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class BeautifulCommand extends Command {
@@ -36,20 +34,14 @@ module.exports = class BeautifulCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(500, 532);
const canvas = createCanvas(500, 532);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 341, 35, 117, 135);
ctx.drawImage(avatar, 343, 301, 117, 135);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'beautiful.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'beautiful.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 341, 35, 117, 135);
ctx.drawImage(avatar, 343, 301, 117, 135);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'beautiful.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+10 -18
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class BobRossCommand extends Command {
@@ -36,23 +34,17 @@ module.exports = class BobRossCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(600, 775);
const canvas = createCanvas(600, 775);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 600, 775);
ctx.rotate(3 * Math.PI / 180);
ctx.drawImage(avatar, 69, 102, 256, 256);
ctx.rotate(-3 * Math.PI / 180);
ctx.drawImage(base, 0, 0);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'bob-ross.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'bob-ross.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 600, 775);
ctx.rotate(3 * Math.PI / 180);
ctx.drawImage(avatar, 69, 102, 256, 256);
ctx.rotate(-3 * Math.PI / 180);
ctx.drawImage(base, 0, 0);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bob-ross.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+22 -31
View File
@@ -1,9 +1,7 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage, parseFont } = require('canvas');
const snekfetch = require('snekfetch');
const moment = require('moment');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
const { version } = require('../../package');
@@ -44,36 +42,29 @@ module.exports = class CardCommand extends Command {
if (cardID < 5000) rarity = 'C';
else if (cardID < 8000) rarity = 'U';
else rarity = 'R';
const Image = Canvas.Image;
Canvas.registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' }); // eslint-disable-line max-len
Canvas.registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'NotoEmoji-Regular.ttf'), { family: 'Roboto' }); // eslint-disable-line max-len
const canvas = new Canvas(390, 544);
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
const canvas = createCanvas(390, 544);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 390, 544);
ctx.drawImage(avatar, 11, 11, 370, 370);
ctx.drawImage(base, 0, 0);
ctx.font = '18px Roboto';
ctx.fillStyle = 'black';
ctx.fillText(member.displayName, 30, 62);
ctx.fillText('Discord Join Date:', 148, 400);
ctx.fillText(moment(member.user.createdTimestamp).format('MMMM Do YYYY'), 148, 420);
ctx.fillText('Role:', 148, 457);
ctx.fillText(member.highestRole.name, 148, 477);
ctx.fillText(rarity, 73, 411);
ctx.fillText(cardID, 60, 457);
ctx.fillText(version.split('.')[0], 68, 502);
ctx.font = '14px Roboto';
ctx.fillText(member.id, 30, 355);
ctx.fillText(`#${member.user.discriminator}`, 313, 355);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'card.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'card.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 390, 544);
ctx.drawImage(avatar, 11, 11, 370, 370);
ctx.drawImage(base, 0, 0);
ctx.font = '18px Roboto';
ctx.fillStyle = 'black';
ctx.fillText(member.displayName, 30, 62);
ctx.fillText('Discord Join Date:', 148, 400);
ctx.fillText(moment(member.user.createdTimestamp).format('MMMM Do YYYY'), 148, 420);
ctx.fillText('Role:', 148, 457);
ctx.fillText(member.highestRole.name, 148, 477);
ctx.fillText(rarity, 73, 411);
ctx.fillText(cardID, 60, 457);
ctx.fillText(version.split('.')[0], 68, 502);
ctx.font = '14px Roboto';
ctx.fillText(member.id, 30, 355);
ctx.fillText(`#${member.user.discriminator}`, 313, 355);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'card.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+8 -16
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class ChallengerCommand extends Command {
@@ -35,21 +33,15 @@ module.exports = class ChallengerCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(500, 500);
const canvas = createCanvas(500, 500);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.fillStyle = '#ff0028';
ctx.fillRect(0, 0, 500, 500);
ctx.drawImage(avatar, 226, 155, 200, 200);
ctx.drawImage(base, 0, 0);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'challenger.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'challenger.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.fillStyle = '#ff0028';
ctx.fillRect(0, 0, 500, 500);
ctx.drawImage(avatar, 226, 155, 200, 200);
ctx.drawImage(base, 0, 0);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'challenger.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+8 -16
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class DexterCommand extends Command {
@@ -35,21 +33,15 @@ module.exports = class DexterCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(744, 554);
const canvas = createCanvas(744, 554);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.rotate(-11 * Math.PI / 180);
ctx.drawImage(avatar, 234, 274, 225, 225);
ctx.rotate(11 * Math.PI / 180);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'dexter.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'dexter.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.rotate(-11 * Math.PI / 180);
ctx.drawImage(avatar, 234, 274, 225, 225);
ctx.rotate(11 * Math.PI / 180);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'dexter.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+13 -18
View File
@@ -1,5 +1,5 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
module.exports = class GreyscaleCommand extends Command {
@@ -33,25 +33,20 @@ module.exports = class GreyscaleCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(256, 256);
const canvas = createCanvas(256, 256);
const ctx = canvas.getContext('2d');
const avatar = new Image();
const generate = () => {
ctx.drawImage(avatar, 0, 0, 256, 256);
const imgData = ctx.getImageData(0, 0, 256, 256);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];
data[i] = brightness;
data[i + 1] = brightness;
data[i + 2] = brightness;
}
ctx.putImageData(imgData, 0, 0);
};
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(avatar, 0, 0, 256, 256);
const imgData = ctx.getImageData(0, 0, 256, 256);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
data[i] = brightness;
data[i + 1] = brightness;
data[i + 2] = brightness;
}
ctx.putImageData(imgData, 0, 0);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'greyscale.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+12 -17
View File
@@ -1,5 +1,5 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
module.exports = class InvertCommand extends Command {
@@ -32,24 +32,19 @@ module.exports = class InvertCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(256, 256);
const canvas = createCanvas(256, 256);
const ctx = canvas.getContext('2d');
const avatar = new Image();
const generate = () => {
ctx.drawImage(avatar, 0, 0, 256, 256);
const imgData = ctx.getImageData(0, 0, 256, 256);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
data[i] = 255 - data[i];
data[i + 1] = 255 - data[i + 1];
data[i + 2] = 255 - data[i + 2];
}
ctx.putImageData(imgData, 0, 0);
};
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(avatar, 0, 0, 256, 256);
const imgData = ctx.getImageData(0, 0, 256, 256);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
data[i] = 255 - data[i];
data[i + 1] = 255 - data[i + 1];
data[i + 2] = 255 - data[i + 2];
}
ctx.putImageData(imgData, 0, 0);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'invert.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+15 -23
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class RIPCommand extends Command {
@@ -36,28 +34,22 @@ module.exports = class RIPCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(507, 338);
const canvas = createCanvas(507, 338);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 158, 51, 200, 200);
const imgData = ctx.getImageData(158, 51, 200, 200);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];
data[i] = brightness;
data[i + 1] = brightness;
data[i + 2] = brightness;
}
ctx.putImageData(imgData, 158, 51);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'rip.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'rip.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 158, 51, 200, 200);
const imgData = ctx.getImageData(158, 51, 200, 200);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) {
const brightness = (0.34 * data[i]) + (0.5 * data[i + 1]) + (0.16 * data[i + 2]);
data[i] = brightness;
data[i + 1] = brightness;
data[i + 2] = brightness;
}
ctx.putImageData(imgData, 158, 51);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rip.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+8 -16
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class SimbaCommand extends Command {
@@ -35,21 +33,15 @@ module.exports = class SimbaCommand extends Command {
size: 256
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(500, 281);
const canvas = createCanvas(500, 281);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.rotate(-24 * Math.PI / 180);
ctx.drawImage(avatar, 75, 160, 130, 150);
ctx.rotate(24 * Math.PI / 180);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'simba.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'simba.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.rotate(-24 * Math.PI / 180);
ctx.drawImage(avatar, 75, 160, 130, 150);
ctx.rotate(24 * Math.PI / 180);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'simba.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+11 -20
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage, parseFont } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class SteamCardCommand extends Command {
@@ -35,25 +33,18 @@ module.exports = class SteamCardCommand extends Command {
size: 512
});
try {
const Image = Canvas.Image;
Canvas.registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' }); // eslint-disable-line max-len
Canvas.registerFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'NotoEmoji-Regular.ttf'), { family: 'Roboto' }); // eslint-disable-line max-len
const canvas = new Canvas(494, 568);
parseFont(path.join(__dirname, '..', '..', 'assets', 'fonts', 'Roboto.ttf'), { family: 'Roboto' });
const canvas = createCanvas(494, 568);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 494, 568);
ctx.drawImage(avatar, 25, 25, 450, 450);
ctx.drawImage(base, 0, 0);
ctx.font = '30px Roboto';
ctx.fillText(user.username, 35, 48);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'steam-card.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'steam-card.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 494, 568);
ctx.drawImage(avatar, 25, 25, 450, 450);
ctx.drawImage(base, 0, 0);
ctx.font = '30px Roboto';
ctx.fillText(user.username, 35, 48);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam-card.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+12 -20
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class TriggeredCommand extends Command {
@@ -35,25 +33,19 @@ module.exports = class TriggeredCommand extends Command {
size: 512
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(320, 371);
const canvas = createCanvas(320, 371);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 320, 371);
ctx.drawImage(avatar, 0, 0, 320, 320);
const imgData = ctx.getImageData(0, 0, 320, 320);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) data[i] = Math.max(255, data[i]);
ctx.putImageData(imgData, 0, 0);
ctx.drawImage(base, 0, 0);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'triggered.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'triggered.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 320, 371);
ctx.drawImage(avatar, 0, 0, 320, 320);
const imgData = ctx.getImageData(0, 0, 320, 320);
const { data } = imgData;
for (let i = 0; i < data.length; i += 4) data[i] = Math.max(255, data[i]);
ctx.putImageData(imgData, 0, 0);
ctx.drawImage(base, 0, 0);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'triggered.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+6 -14
View File
@@ -1,8 +1,6 @@
const Command = require('../../structures/Command');
const Canvas = require('canvas');
const { createCanvas, loadImage } = require('canvas');
const snekfetch = require('snekfetch');
const { promisifyAll } = require('tsubaki');
const fs = promisifyAll(require('fs'));
const path = require('path');
module.exports = class WantedCommand extends Command {
@@ -35,19 +33,13 @@ module.exports = class WantedCommand extends Command {
size: 512
});
try {
const Image = Canvas.Image;
const canvas = new Canvas(741, 1000);
const canvas = createCanvas(741, 1000);
const ctx = canvas.getContext('2d');
const base = new Image();
const avatar = new Image();
const generate = () => {
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 150, 360, 430, 430);
};
base.src = await fs.readFileAsync(path.join(__dirname, '..', '..', 'assets', 'images', 'wanted.png'));
const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'wanted.png'));
const { body } = await snekfetch.get(avatarURL);
avatar.src = body;
generate();
const avatar = await loadImage(body);
ctx.drawImage(base, 0, 0);
ctx.drawImage(avatar, 150, 360, 430, 430);
return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'wanted.png' }] });
} catch (err) {
return msg.say(`Oh no, the image generation failed: \`${err.message}\`. Try again later!`);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "xiaobot",
"version": "27.1.5",
"version": "27.1.6",
"description": "Your personal server companion.",
"main": "Shard.js",
"scripts": {