From 537f4cd88dc45ac51273e5810114eeae0a9ca393 Mon Sep 17 00:00:00 2001 From: Daniel Odendahl Jr Date: Sun, 2 Jul 2017 16:27:08 +0000 Subject: [PATCH] Make avatar edit commands not say to contact me --- Shard.js | 2 +- commands/avatar-edit/3000-years.js | 32 +++++++------ commands/avatar-edit/beautiful.js | 34 +++++++------ commands/avatar-edit/bob-ross.js | 40 +++++++++------- commands/avatar-edit/card.js | 76 ++++++++++++++++-------------- commands/avatar-edit/challenger.js | 36 +++++++------- commands/avatar-edit/dexter.js | 36 +++++++------- commands/avatar-edit/greyscale.js | 44 +++++++++-------- commands/avatar-edit/invert.js | 42 +++++++++-------- commands/avatar-edit/rip.js | 50 +++++++++++--------- commands/avatar-edit/simba.js | 36 +++++++------- commands/avatar-edit/steam-card.js | 44 +++++++++-------- commands/avatar-edit/triggered.js | 44 +++++++++-------- commands/avatar-edit/wanted.js | 32 +++++++------ commands/games/hangman.js | 2 +- package.json | 2 +- 16 files changed, 302 insertions(+), 250 deletions(-) diff --git a/Shard.js b/Shard.js index eaab8bef..5600aa1a 100644 --- a/Shard.js +++ b/Shard.js @@ -1,4 +1,4 @@ const { ShardingManager } = require('discord.js'); const { TOKEN } = process.env; const Manager = new ShardingManager('./XiaoBot.js', { token: TOKEN }); -Manager.spawn(2); +Manager.spawn(); diff --git a/commands/avatar-edit/3000-years.js b/commands/avatar-edit/3000-years.js index 0787eb77..b3bfc5ff 100644 --- a/commands/avatar-edit/3000-years.js +++ b/commands/avatar-edit/3000-years.js @@ -35,19 +35,23 @@ module.exports = class YearsCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: '3000-years.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/beautiful.js b/commands/avatar-edit/beautiful.js index d7236057..ed9cab08 100644 --- a/commands/avatar-edit/beautiful.js +++ b/commands/avatar-edit/beautiful.js @@ -35,20 +35,24 @@ module.exports = class BeautifulCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'beautiful.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/bob-ross.js b/commands/avatar-edit/bob-ross.js index e3cedf1d..292738b9 100644 --- a/commands/avatar-edit/bob-ross.js +++ b/commands/avatar-edit/bob-ross.js @@ -35,23 +35,27 @@ module.exports = class BobRossCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bob-ross.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/card.js b/commands/avatar-edit/card.js index 15f033fe..b2408af8 100644 --- a/commands/avatar-edit/card.js +++ b/commands/avatar-edit/card.js @@ -38,41 +38,45 @@ module.exports = class CardCommand extends Command { format: 'png', size: 256 }); - const cardID = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000; - let rarity; - 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); - 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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'card.png' }] }); + try { + const cardID = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000; + let rarity; + 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); + 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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/challenger.js b/commands/avatar-edit/challenger.js index d15f2f7d..0f12ab8e 100644 --- a/commands/avatar-edit/challenger.js +++ b/commands/avatar-edit/challenger.js @@ -34,21 +34,25 @@ module.exports = class ChallengerCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'challenger.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/dexter.js b/commands/avatar-edit/dexter.js index fc313afa..e9e1ff1d 100644 --- a/commands/avatar-edit/dexter.js +++ b/commands/avatar-edit/dexter.js @@ -34,21 +34,25 @@ module.exports = class DexterCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'dexter.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/greyscale.js b/commands/avatar-edit/greyscale.js index 37b1eed4..c3ecc78b 100644 --- a/commands/avatar-edit/greyscale.js +++ b/commands/avatar-edit/greyscale.js @@ -32,25 +32,29 @@ module.exports = class GreyscaleCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'greyscale.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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(); + 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!`); + } } }; diff --git a/commands/avatar-edit/invert.js b/commands/avatar-edit/invert.js index 8727bd0b..539e37b6 100644 --- a/commands/avatar-edit/invert.js +++ b/commands/avatar-edit/invert.js @@ -31,24 +31,28 @@ module.exports = class InvertCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'invert.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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(); + 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!`); + } } }; diff --git a/commands/avatar-edit/rip.js b/commands/avatar-edit/rip.js index 7493e6ac..cc29f5d0 100644 --- a/commands/avatar-edit/rip.js +++ b/commands/avatar-edit/rip.js @@ -35,28 +35,32 @@ module.exports = class RIPCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'rip.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/simba.js b/commands/avatar-edit/simba.js index b67acad8..ebfc8dfa 100644 --- a/commands/avatar-edit/simba.js +++ b/commands/avatar-edit/simba.js @@ -34,21 +34,25 @@ module.exports = class SimbaCommand extends Command { format: 'png', size: 256 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'simba.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/steam-card.js b/commands/avatar-edit/steam-card.js index a2472ec6..d9e03f48 100644 --- a/commands/avatar-edit/steam-card.js +++ b/commands/avatar-edit/steam-card.js @@ -34,25 +34,29 @@ module.exports = class SteamCardCommand extends Command { format: 'png', size: 512 }); - 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); - 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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'steam-card.png' }] }); + 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); + 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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/triggered.js b/commands/avatar-edit/triggered.js index 64e67e17..cd9b264b 100644 --- a/commands/avatar-edit/triggered.js +++ b/commands/avatar-edit/triggered.js @@ -34,25 +34,29 @@ module.exports = class TriggeredCommand extends Command { format: 'png', size: 512 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'triggered.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/avatar-edit/wanted.js b/commands/avatar-edit/wanted.js index 983d65ce..9554cae9 100644 --- a/commands/avatar-edit/wanted.js +++ b/commands/avatar-edit/wanted.js @@ -34,19 +34,23 @@ module.exports = class WantedCommand extends Command { format: 'png', size: 512 }); - const Image = Canvas.Image; - const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); - avatar.src = body; - generate(); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'wanted.png' }] }); + try { + const Image = Canvas.Image; + const canvas = new Canvas(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 { body } = await snekfetch.get(avatarURL); + avatar.src = body; + generate(); + 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!`); + } } }; diff --git a/commands/games/hangman.js b/commands/games/hangman.js index 7b256438..75848ef4 100644 --- a/commands/games/hangman.js +++ b/commands/games/hangman.js @@ -77,7 +77,7 @@ module.exports = class HangmanCommand extends Command { else return msg.say(`Too bad... It was ${word}...`); } catch (err) { this.playing.delete(msg.guild.id); - return msg.say(`Oh no, an Error occurred! Try again later! \`${err.name}: ${err.message}\``); + return msg.say(`Oh no, an Error occurred: \`${err.message}\`. Try again later!`); } } }; diff --git a/package.json b/package.json index 4e34c66d..0312eecc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiaobot", - "version": "26.0.0", + "version": "26.0.1", "description": "Your personal server companion.", "main": "Shard.js", "scripts": {