diff --git a/README.md b/README.md index 28179fda..2a609a63 100644 --- a/README.md +++ b/README.md @@ -93,21 +93,20 @@ things, I'm not taking any chances. 5. Create a file named `.env` and fill it out as shown in above and in `.env.example`. 6. Run `apt update` and `apt upgrade` to install the latest dependencies of your distro. 7. Run `apt install ffmpeg` to install ffmpeg. -8. [Follow these instructions to install the dependencies for `node-canvas`](https://github.com/Automattic/node-canvas/wiki/Installation%3A-Ubuntu-and-other-Debian-based-systems). -9. Run `apt install liblqr-1-0-dev liblqr-1-0` to install liblqr (needed for ImageMagick). -10. [Follow these instructions to install ImageMagick](https://www.tecmint.com/install-imagemagick-on-debian-ubuntu/). -11. [Follow these instructions to set up Redis](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04). Remember to set up a password! -12. Run `apt install libtool` so sodium can compile if necessary. **(Optional)** -13. Download [the NSFW model](https://github.com/gantman/nsfw_model) and extract the contents to `/tf_models/nsfw`. -14. Download DECTalk and extract `dectalk.dll`, `dtalk_us.dic`, `MSVCRTd.DLL`, and `say.exe` to `dectalk/`. I cannot help you find this. -15. Run `apt install wine` to install wine. -16. Run `dpkg --add-architecture i386` to allow installation of wine32. -17. Run `apt update` again. -18. Run `apt install wine32` to install wine32. -19. Run `apt install xvfb` to install xvfb. -20. Run `yarn install --production` in the folder you cloned the bot. -21. Run `npx parse-domain-update` to update the domain list for `parse-domain`. -22. Start Xiao up! +8. Run `apt install liblqr-1-0-dev liblqr-1-0` to install liblqr (needed for ImageMagick). +9. [Follow these instructions to install ImageMagick](https://www.tecmint.com/install-imagemagick-on-debian-ubuntu/). +10. [Follow these instructions to set up Redis](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04). Remember to set up a password! +11. Run `apt install libtool` so sodium can compile if necessary. **(Optional)** +12. Download [the NSFW model](https://github.com/gantman/nsfw_model) and extract the contents to `/tf_models/nsfw`. +13. Download DECTalk and extract `dectalk.dll`, `dtalk_us.dic`, `MSVCRTd.DLL`, and `say.exe` to `dectalk/`. I cannot help you find this. +14. Run `apt install wine` to install wine. +15. Run `dpkg --add-architecture i386` to allow installation of wine32. +16. Run `apt update` again. +17. Run `apt install wine32` to install wine32. +18. Run `apt install xvfb` to install xvfb. +19. Run `yarn install --production` in the folder you cloned the bot. +20. Run `npx parse-domain-update` to update the domain list for `parse-domain`. +21. Start Xiao up! ## Commands Total: 510 @@ -684,12 +683,12 @@ Total: 510 * [@discordjs/opus](https://www.npmjs.com/package/@discordjs/opus) * [@discordjs/voice](https://www.npmjs.com/package/@discordjs/voice) * [@mediapipe/face_detection](https://www.npmjs.com/package/@mediapipe/face_detection) +* [@napi-rs/canvas](https://www.npmjs.com/package/@napi-rs/canvas) * [@tensorflow-models/face-detection](https://www.npmjs.com/package/@tensorflow-models/face-detection) * [@tensorflow/tfjs-node](https://www.npmjs.com/package/@tensorflow/tfjs-node) * [@twemoji/parser](https://www.npmjs.com/package/@twemoji/parser) * [bombsweeper.js](https://www.npmjs.com/package/bombsweeper.js) * [bufferutil](https://www.npmjs.com/package/bufferutil) -* [canvas](https://www.npmjs.com/package/canvas) * [cheerio](https://www.npmjs.com/package/cheerio) * [city-timezones](https://www.npmjs.com/package/city-timezones) * [cloc](https://www.npmjs.com/package/cloc) diff --git a/commands/analyze/aspect-ratio.js b/commands/analyze/aspect-ratio.js index 26d6d49a..62182ef8 100644 --- a/commands/analyze/aspect-ratio.js +++ b/commands/analyze/aspect-ratio.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { loadImage } = require('canvas'); +const { loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { gcd } = require('../../util/Util'); diff --git a/commands/analyze/dominant-color.js b/commands/analyze/dominant-color.js index a3828f75..c326b3de 100644 --- a/commands/analyze/dominant-color.js +++ b/commands/analyze/dominant-color.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const ntc = require('ntcjs'); const { rgbToHex } = require('../../util/Util'); diff --git a/commands/analyze/faces.js b/commands/analyze/faces.js index 763cec54..98451087 100644 --- a/commands/analyze/faces.js +++ b/commands/analyze/faces.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); module.exports = class FacesCommand extends Command { constructor(client) { diff --git a/commands/analyze/image-size.js b/commands/analyze/image-size.js index ae82a633..e6fc9024 100644 --- a/commands/analyze/image-size.js +++ b/commands/analyze/image-size.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { loadImage } = require('canvas'); +const { loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class ImageSizeCommand extends Command { diff --git a/commands/edit-avatar/avatar-fusion.js b/commands/edit-avatar/avatar-fusion.js index 49fc9fc9..2a492487 100644 --- a/commands/edit-avatar/avatar-fusion.js +++ b/commands/edit-avatar/avatar-fusion.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class AvatarFusionCommand extends Command { diff --git a/commands/edit-avatar/eject.js b/commands/edit-avatar/eject.js index acbb0d91..eb86616c 100644 --- a/commands/edit-avatar/eject.js +++ b/commands/edit-avatar/eject.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const GIFEncoder = require('gifencoder'); const { MersenneTwister19937, bool } = require('random-js'); const request = require('node-superfetch'); diff --git a/commands/edit-avatar/hat.js b/commands/edit-avatar/hat.js index aebd95f8..1e77c682 100644 --- a/commands/edit-avatar/hat.js +++ b/commands/edit-avatar/hat.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const hats = require('../../assets/json/hat'); diff --git a/commands/edit-avatar/he-lives-in-you.js b/commands/edit-avatar/he-lives-in-you.js index 0a12b8b8..64f5d1dd 100644 --- a/commands/edit-avatar/he-lives-in-you.js +++ b/commands/edit-avatar/he-lives-in-you.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-avatar/hearts.js b/commands/edit-avatar/hearts.js index fb20acca..14d20a22 100644 --- a/commands/edit-avatar/hearts.js +++ b/commands/edit-avatar/hearts.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-avatar/i-have-the-power.js b/commands/edit-avatar/i-have-the-power.js index 4aa2ba55..5dcd261b 100644 --- a/commands/edit-avatar/i-have-the-power.js +++ b/commands/edit-avatar/i-have-the-power.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-avatar/rip.js b/commands/edit-avatar/rip.js index 688bd423..9ecdd074 100644 --- a/commands/edit-avatar/rip.js +++ b/commands/edit-avatar/rip.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { greyscale } = require('../../util/Canvas'); diff --git a/commands/edit-avatar/steam-now-playing.js b/commands/edit-avatar/steam-now-playing.js index bf2e52e5..38bfd390 100644 --- a/commands/edit-avatar/steam-now-playing.js +++ b/commands/edit-avatar/steam-now-playing.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { shortenText } = require('../../util/Canvas'); diff --git a/commands/edit-avatar/triggered.js b/commands/edit-avatar/triggered.js index 6652ace4..ec86664f 100644 --- a/commands/edit-avatar/triggered.js +++ b/commands/edit-avatar/triggered.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const GIFEncoder = require('gifencoder'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-face/anime-eyes.js b/commands/edit-face/anime-eyes.js index 6b77240b..418ff1df 100644 --- a/commands/edit-face/anime-eyes.js +++ b/commands/edit-face/anime-eyes.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class AnimeEyesCommand extends Command { diff --git a/commands/edit-face/danny-devito.js b/commands/edit-face/danny-devito.js index 9cb79b6e..ed2c5d99 100644 --- a/commands/edit-face/danny-devito.js +++ b/commands/edit-face/danny-devito.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class DannyDevitoCommand extends Command { diff --git a/commands/edit-face/emoji-face.js b/commands/edit-face/emoji-face.js index 0a05f8bc..292df994 100644 --- a/commands/edit-face/emoji-face.js +++ b/commands/edit-face/emoji-face.js @@ -1,7 +1,7 @@ const Command = require('../../framework/Command'); const { GuildEmoji } = require('discord.js'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const twemoji = require('@twemoji/parser'); module.exports = class EmojiFaceCommand extends Command { diff --git a/commands/edit-face/eyes.js b/commands/edit-face/eyes.js index 639ac0a2..e6e45fa5 100644 --- a/commands/edit-face/eyes.js +++ b/commands/edit-face/eyes.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class EyesCommand extends Command { diff --git a/commands/edit-face/shrek.js b/commands/edit-face/shrek.js index 0c567b5d..3146bf56 100644 --- a/commands/edit-face/shrek.js +++ b/commands/edit-face/shrek.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class ShrekCommand extends Command { diff --git a/commands/edit-image-text/ace-attorney.js b/commands/edit-image-text/ace-attorney.js index f7be33a9..5a2f2e5c 100644 --- a/commands/edit-image-text/ace-attorney.js +++ b/commands/edit-image-text/ace-attorney.js @@ -1,9 +1,9 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { firstUpperCase } = require('../../util/Util'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); const characters = { phoenix: ['phoenix', 'wright', 'naruhodo', 'ryuuichi', 'ryu', 'nick'], edgeworth: ['miles', 'edgeworth', 'mitsurugi', 'reiji', 'edgey'], @@ -82,7 +82,7 @@ module.exports = class AceAttorneyCommand extends Command { ctx.fillText(firstUpperCase(character), 6, 176); let text = wrapText(ctx, quote, 242); text = text.length > 5 ? `${text.slice(0, 5).join('\n')}...` : text.join('\n'); - ctx.fillText(text, 7, 199); + fillTextWithBreaks(ctx, text, 7, 199); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: `ace-attorney-${character}.png` }] }); } }; diff --git a/commands/edit-image-text/achievement.js b/commands/edit-image-text/achievement.js index 41af8c41..8348d447 100644 --- a/commands/edit-image-text/achievement.js +++ b/commands/edit-image-text/achievement.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { shortenText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/axis-cult-sign-up.js b/commands/edit-image-text/axis-cult-sign-up.js index 357ac67f..c595003b 100644 --- a/commands/edit-image-text/axis-cult-sign-up.js +++ b/commands/edit-image-text/axis-cult-sign-up.js @@ -1,7 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); +const { fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class AxisCultSignUpCommand extends Command { constructor(client) { @@ -69,7 +70,7 @@ module.exports = class AxisCultSignUpCommand extends Command { ctx.fillText(profession, 960, 2169); ctx.fillText('Xiao', 960, 2370); ctx.font = this.client.fonts.get('Konosuba.ttf').toCanvasString(123); - ctx.fillText('ERIS PADS\nHER CHEST!', 1037, 2874); + fillTextWithBreaks(ctx, 'ERIS PADS\nHER CHEST!', 1037, 2874); return msg.say({ files: [{ attachment: canvas.toBuffer('image/jpeg'), name: 'axis-cult-sign-up.jpg' }] }); } }; diff --git a/commands/edit-image-text/caution.js b/commands/edit-image-text/caution.js index b442c806..569ed5a7 100644 --- a/commands/edit-image-text/caution.js +++ b/commands/edit-image-text/caution.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/certificate.js b/commands/edit-image-text/certificate.js index e6b2e9fb..2365ea1a 100644 --- a/commands/edit-image-text/certificate.js +++ b/commands/edit-image-text/certificate.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const moment = require('moment'); const path = require('path'); diff --git a/commands/edit-image-text/chinese-restaurant.js b/commands/edit-image-text/chinese-restaurant.js index d57407f2..73b62f52 100644 --- a/commands/edit-image-text/chinese-restaurant.js +++ b/commands/edit-image-text/chinese-restaurant.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/danger.js b/commands/edit-image-text/danger.js index c6ae5d3a..aa937aa2 100644 --- a/commands/edit-image-text/danger.js +++ b/commands/edit-image-text/danger.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/font.js b/commands/edit-image-text/font.js index 30a9667d..4af2ea9f 100644 --- a/commands/edit-image-text/font.js +++ b/commands/edit-image-text/font.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); -const { createCanvas } = require('canvas'); -const { wrapText } = require('../../util/Canvas'); +const { createCanvas } = require('@napi-rs/canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class FontCommand extends Command { constructor(client) { @@ -46,7 +46,7 @@ module.exports = class FontCommand extends Command { ctx.fillStyle = 'white'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = 'black'; - ctx.fillText(lines.join('\n'), 25, 25); + fillTextWithBreaks(ctx, lines.join('\n'), 25, 25); return canvas.toBuffer(); } }; diff --git a/commands/edit-image-text/gandhi-quote.js b/commands/edit-image-text/gandhi-quote.js index 88be99b2..592435f2 100644 --- a/commands/edit-image-text/gandhi-quote.js +++ b/commands/edit-image-text/gandhi-quote.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/highway-sign.js b/commands/edit-image-text/highway-sign.js index 85213e3b..17fe6963 100644 --- a/commands/edit-image-text/highway-sign.js +++ b/commands/edit-image-text/highway-sign.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/hollywood-star.js b/commands/edit-image-text/hollywood-star.js index d086104b..5be49549 100644 --- a/commands/edit-image-text/hollywood-star.js +++ b/commands/edit-image-text/hollywood-star.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class HollywoodStarCommand extends Command { diff --git a/commands/edit-image-text/jeopardy-question.js b/commands/edit-image-text/jeopardy-question.js index d7c605a2..aaef65ee 100644 --- a/commands/edit-image-text/jeopardy-question.js +++ b/commands/edit-image-text/jeopardy-question.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const { wrapText } = require('../../util/Canvas'); module.exports = class JeopardyQuestionCommand extends Command { diff --git a/commands/edit-image-text/license-plate.js b/commands/edit-image-text/license-plate.js index 957aeaa1..1d96848c 100644 --- a/commands/edit-image-text/license-plate.js +++ b/commands/edit-image-text/license-plate.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class LicensePlateCommand extends Command { diff --git a/commands/edit-image-text/speed-limit.js b/commands/edit-image-text/speed-limit.js index e103770f..3c276e1a 100644 --- a/commands/edit-image-text/speed-limit.js +++ b/commands/edit-image-text/speed-limit.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class SpeedLimitCommand extends Command { diff --git a/commands/edit-image-text/spongebob-time-card.js b/commands/edit-image-text/spongebob-time-card.js index 33be5700..369f7db2 100644 --- a/commands/edit-image-text/spongebob-time-card.js +++ b/commands/edit-image-text/spongebob-time-card.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image-text/tweet.js b/commands/edit-image-text/tweet.js index 6b67be9c..c23fac20 100644 --- a/commands/edit-image-text/tweet.js +++ b/commands/edit-image-text/tweet.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const { TwitterOpenApi } = require('twitter-openapi-typescript'); const emojiRegex = require('emoji-regex'); const twemoji = require('@twemoji/parser'); @@ -10,7 +10,7 @@ const request = require('node-superfetch'); const { readFile } = require('fs/promises'); const path = require('path'); const { formatNumberK, randomRange } = require('../../util/Util'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class TweetCommand extends Command { constructor(client) { @@ -224,7 +224,7 @@ module.exports = class TweetCommand extends Command { const wrapped = wrapText(ctx, text, maxLineLen, true); const emoji = text.match(emojiRegex()); if (!emoji) { - ctx.fillText(wrapped.join('\n'), x, y); + fillTextWithBreaks(ctx, wrapped.join('\n'), x, y); this.fillHashtags(ctx, wrapped, x, y, emojiSize); return ctx; } diff --git a/commands/edit-image-text/undertale.js b/commands/edit-image-text/undertale.js index fb492a3c..7f23cb21 100644 --- a/commands/edit-image-text/undertale.js +++ b/commands/edit-image-text/undertale.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); const characters = require('../../assets/json/undertale'); diff --git a/commands/edit-image-text/zero-dialogue.js b/commands/edit-image-text/zero-dialogue.js index 5ec36ea5..c93b8808 100644 --- a/commands/edit-image-text/zero-dialogue.js +++ b/commands/edit-image-text/zero-dialogue.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class ZeroDialogueCommand extends Command { constructor(client) { @@ -63,7 +63,7 @@ module.exports = class ZeroDialogueCommand extends Command { ctx.textBaseline = 'top'; let text = wrapText(ctx, quote, 425); text = text.length > 2 ? `${text.slice(0, 2).join('\n')}...` : text.join('\n'); - ctx.fillText(text, 8, 8); + fillTextWithBreaks(ctx, text, 8, 8); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'zero-dialogue.png' }] }); } }; diff --git a/commands/edit-image/analog-clock.js b/commands/edit-image/analog-clock.js index d031ee94..8f7d9814 100644 --- a/commands/edit-image/analog-clock.js +++ b/commands/edit-image/analog-clock.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const moment = require('moment-timezone'); const { firstUpperCase } = require('../../util/Util'); diff --git a/commands/edit-image/approved.js b/commands/edit-image/approved.js index b0bef4d6..ee7a92f5 100644 --- a/commands/edit-image/approved.js +++ b/commands/edit-image/approved.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImage } = require('../../util/Canvas'); diff --git a/commands/edit-image/ascii.js b/commands/edit-image/ascii.js index e62789c1..ce85bad9 100644 --- a/commands/edit-image/ascii.js +++ b/commands/edit-image/ascii.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { loadImage } = require('canvas'); +const { loadImage } = require('@napi-rs/canvas'); const imageToAscii = require('image-to-ascii'); const request = require('node-superfetch'); diff --git a/commands/edit-image/blur.js b/commands/edit-image/blur.js index d26ef5d9..8badc026 100644 --- a/commands/edit-image/blur.js +++ b/commands/edit-image/blur.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const stackBlur = require('stackblur-canvas'); diff --git a/commands/edit-image/bob-ross.js b/commands/edit-image/bob-ross.js index 5bcd73cf..ca6f7579 100644 --- a/commands/edit-image/bob-ross.js +++ b/commands/edit-image/bob-ross.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-image/brazzers.js b/commands/edit-image/brazzers.js index 6e5983c7..ae9f0531 100644 --- a/commands/edit-image/brazzers.js +++ b/commands/edit-image/brazzers.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/chocolate-milk.js b/commands/edit-image/chocolate-milk.js index 4ae9fa12..9af2f1ef 100644 --- a/commands/edit-image/chocolate-milk.js +++ b/commands/edit-image/chocolate-milk.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/circle.js b/commands/edit-image/circle.js index 64819b77..483fd591 100644 --- a/commands/edit-image/circle.js +++ b/commands/edit-image/circle.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class CircleCommand extends Command { diff --git a/commands/edit-image/color.js b/commands/edit-image/color.js index bbab80d8..e645db3e 100644 --- a/commands/edit-image/color.js +++ b/commands/edit-image/color.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const ntc = require('ntcjs'); module.exports = class ColorCommand extends Command { diff --git a/commands/edit-image/communist.js b/commands/edit-image/communist.js index 8a84c0ba..8b7ffe46 100644 --- a/commands/edit-image/communist.js +++ b/commands/edit-image/communist.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImage, drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-image/contrast.js b/commands/edit-image/contrast.js index 757cdf68..0bb4a712 100644 --- a/commands/edit-image/contrast.js +++ b/commands/edit-image/contrast.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { contrast } = require('../../util/Canvas'); diff --git a/commands/edit-image/convert-image.js b/commands/edit-image/convert-image.js index 94a1f9e9..834f2c45 100644 --- a/commands/edit-image/convert-image.js +++ b/commands/edit-image/convert-image.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const formats = { jpg: 'image/jpeg', diff --git a/commands/edit-image/crop-to-content.js b/commands/edit-image/crop-to-content.js index 71254450..7b5bb5f8 100644 --- a/commands/edit-image/crop-to-content.js +++ b/commands/edit-image/crop-to-content.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { cropToContent } = require('../../util/Canvas'); diff --git a/commands/edit-image/desaturate.js b/commands/edit-image/desaturate.js index 079b403a..31f6c84d 100644 --- a/commands/edit-image/desaturate.js +++ b/commands/edit-image/desaturate.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { desaturate } = require('../../util/Canvas'); diff --git a/commands/edit-image/dexter.js b/commands/edit-image/dexter.js index e9b93768..5a76030d 100644 --- a/commands/edit-image/dexter.js +++ b/commands/edit-image/dexter.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-image/distort.js b/commands/edit-image/distort.js index 1eb967ab..0f6a8933 100644 --- a/commands/edit-image/distort.js +++ b/commands/edit-image/distort.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { distort } = require('../../util/Canvas'); diff --git a/commands/edit-image/fire-frame.js b/commands/edit-image/fire-frame.js index 66af3ad3..c3f04e4b 100644 --- a/commands/edit-image/fire-frame.js +++ b/commands/edit-image/fire-frame.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-image/fish-eye.js b/commands/edit-image/fish-eye.js index 40afccda..1baa1858 100644 --- a/commands/edit-image/fish-eye.js +++ b/commands/edit-image/fish-eye.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { fishEye } = require('../../util/Canvas'); diff --git a/commands/edit-image/frame.js b/commands/edit-image/frame.js index 5e1047d7..208ca1dd 100644 --- a/commands/edit-image/frame.js +++ b/commands/edit-image/frame.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-image/ghost.js b/commands/edit-image/ghost.js index 425d93b4..2a106e68 100644 --- a/commands/edit-image/ghost.js +++ b/commands/edit-image/ghost.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class GhostCommand extends Command { diff --git a/commands/edit-image/glass-shatter.js b/commands/edit-image/glass-shatter.js index d92d5ecc..d1e9c549 100644 --- a/commands/edit-image/glass-shatter.js +++ b/commands/edit-image/glass-shatter.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/glitch.js b/commands/edit-image/glitch.js index 18b51a06..3e69dca7 100644 --- a/commands/edit-image/glitch.js +++ b/commands/edit-image/glitch.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { distort } = require('../../util/Canvas'); diff --git a/commands/edit-image/greyscale.js b/commands/edit-image/greyscale.js index be82376e..d6ba5d41 100644 --- a/commands/edit-image/greyscale.js +++ b/commands/edit-image/greyscale.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { greyscale } = require('../../util/Canvas'); diff --git a/commands/edit-image/gun.js b/commands/edit-image/gun.js index 2a2ad21f..24dc267a 100644 --- a/commands/edit-image/gun.js +++ b/commands/edit-image/gun.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/hands.js b/commands/edit-image/hands.js index 8db3c7bc..5d823b58 100644 --- a/commands/edit-image/hands.js +++ b/commands/edit-image/hands.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/ifunny.js b/commands/edit-image/ifunny.js index 5db57ff4..2b7fe9ab 100644 --- a/commands/edit-image/ifunny.js +++ b/commands/edit-image/ifunny.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/invert.js b/commands/edit-image/invert.js index a0406777..dfe0d4e2 100644 --- a/commands/edit-image/invert.js +++ b/commands/edit-image/invert.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { invert } = require('../../util/Canvas'); diff --git a/commands/edit-image/lego-icon.js b/commands/edit-image/lego-icon.js index 31dddfc7..4bd30d0d 100644 --- a/commands/edit-image/lego-icon.js +++ b/commands/edit-image/lego-icon.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/mirror.js b/commands/edit-image/mirror.js index ab215f6f..6b705886 100644 --- a/commands/edit-image/mirror.js +++ b/commands/edit-image/mirror.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const types = ['x', 'y', 'both']; diff --git a/commands/edit-image/motion-blur.js b/commands/edit-image/motion-blur.js index 575a465e..45afe0ad 100644 --- a/commands/edit-image/motion-blur.js +++ b/commands/edit-image/motion-blur.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { motionBlur } = require('../../util/Canvas'); diff --git a/commands/edit-image/needs-more-jpeg.js b/commands/edit-image/needs-more-jpeg.js index ac1e62e6..883677bc 100644 --- a/commands/edit-image/needs-more-jpeg.js +++ b/commands/edit-image/needs-more-jpeg.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class NeedsMoreJpegCommand extends Command { diff --git a/commands/edit-image/pet.js b/commands/edit-image/pet.js index bfdb6b30..b99076d5 100644 --- a/commands/edit-image/pet.js +++ b/commands/edit-image/pet.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const GIFEncoder = require('gifencoder'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/pixelize.js b/commands/edit-image/pixelize.js index a761c71b..a10fdd77 100644 --- a/commands/edit-image/pixelize.js +++ b/commands/edit-image/pixelize.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { pixelize } = require('../../util/Canvas'); diff --git a/commands/edit-image/police-tape.js b/commands/edit-image/police-tape.js index 5d50c26a..71be512b 100644 --- a/commands/edit-image/police-tape.js +++ b/commands/edit-image/police-tape.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImage } = require('../../util/Canvas'); diff --git a/commands/edit-image/rainbow.js b/commands/edit-image/rainbow.js index 63808f45..da8789e5 100644 --- a/commands/edit-image/rainbow.js +++ b/commands/edit-image/rainbow.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/rejected.js b/commands/edit-image/rejected.js index d794a363..0a6f27fe 100644 --- a/commands/edit-image/rejected.js +++ b/commands/edit-image/rejected.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImage } = require('../../util/Canvas'); diff --git a/commands/edit-image/resize.js b/commands/edit-image/resize.js index 753bb0da..8f2d4a71 100644 --- a/commands/edit-image/resize.js +++ b/commands/edit-image/resize.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class ResizeCommand extends Command { diff --git a/commands/edit-image/rotate.js b/commands/edit-image/rotate.js index 96c384f2..877db3ef 100644 --- a/commands/edit-image/rotate.js +++ b/commands/edit-image/rotate.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class RotateCommand extends Command { diff --git a/commands/edit-image/sepia.js b/commands/edit-image/sepia.js index e219aab0..9843288a 100644 --- a/commands/edit-image/sepia.js +++ b/commands/edit-image/sepia.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { sepia } = require('../../util/Canvas'); diff --git a/commands/edit-image/shake.js b/commands/edit-image/shake.js index 923f1f92..437838ab 100644 --- a/commands/edit-image/shake.js +++ b/commands/edit-image/shake.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const GIFEncoder = require('gifencoder'); const request = require('node-superfetch'); diff --git a/commands/edit-image/silhouette.js b/commands/edit-image/silhouette.js index cbf9de65..b6c62c4c 100644 --- a/commands/edit-image/silhouette.js +++ b/commands/edit-image/silhouette.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { silhouette } = require('../../util/Canvas'); diff --git a/commands/edit-image/sip.js b/commands/edit-image/sip.js index 666b97f4..2fb022c1 100644 --- a/commands/edit-image/sip.js +++ b/commands/edit-image/sip.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/snapchat.js b/commands/edit-image/snapchat.js index b2afa754..72245e02 100644 --- a/commands/edit-image/snapchat.js +++ b/commands/edit-image/snapchat.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class SnapchatCommand extends Command { diff --git a/commands/edit-image/spotify-now-playing.js b/commands/edit-image/spotify-now-playing.js index e7c7fcc3..041e1cb3 100644 --- a/commands/edit-image/spotify-now-playing.js +++ b/commands/edit-image/spotify-now-playing.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/square.js b/commands/edit-image/square.js index 7f84311d..3dbd2408 100644 --- a/commands/edit-image/square.js +++ b/commands/edit-image/square.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); module.exports = class SquareCommand extends Command { diff --git a/commands/edit-image/steam-card.js b/commands/edit-image/steam-card.js index 0ff6f5f7..9669f209 100644 --- a/commands/edit-image/steam-card.js +++ b/commands/edit-image/steam-card.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-image/subtitle.js b/commands/edit-image/subtitle.js index b9f49baa..eceec375 100644 --- a/commands/edit-image/subtitle.js +++ b/commands/edit-image/subtitle.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-image/tint.js b/commands/edit-image/tint.js index 168db60d..1293843b 100644 --- a/commands/edit-image/tint.js +++ b/commands/edit-image/tint.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-image/vignette.js b/commands/edit-image/vignette.js index c87090be..95f00c61 100644 --- a/commands/edit-image/vignette.js +++ b/commands/edit-image/vignette.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { vignette } = require('../../util/Canvas'); diff --git a/commands/edit-image/wanted.js b/commands/edit-image/wanted.js index 7fb414fa..533f487a 100644 --- a/commands/edit-image/wanted.js +++ b/commands/edit-image/wanted.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { sepia, centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-image/wild-pokemon.js b/commands/edit-image/wild-pokemon.js index 0de79455..0744cf7e 100644 --- a/commands/edit-image/wild-pokemon.js +++ b/commands/edit-image/wild-pokemon.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart, greyscale, pixelize } = require('../../util/Canvas'); diff --git a/commands/edit-image/you-died.js b/commands/edit-image/you-died.js index e98140bf..83c9a5d4 100644 --- a/commands/edit-image/you-died.js +++ b/commands/edit-image/you-died.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImage, greyscale, drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-meme/3000-years.js b/commands/edit-meme/3000-years.js index 3ed29c62..0e0f04fe 100644 --- a/commands/edit-meme/3000-years.js +++ b/commands/edit-meme/3000-years.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/alert.js b/commands/edit-meme/alert.js index f142580f..5697d7b8 100644 --- a/commands/edit-meme/alert.js +++ b/commands/edit-meme/alert.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class AlertCommand extends Command { constructor(client) { @@ -51,7 +51,7 @@ module.exports = class AlertCommand extends Command { ctx.textBaseline = 'top'; let text = wrapText(ctx, message, 540); text = text.length > 3 ? `${text.slice(0, 3).join('\n')}...` : text.join('\n'); - ctx.fillText(text, 48, 178); + fillTextWithBreaks(ctx, text, 48, 178); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'alert.png' }] }); } }; diff --git a/commands/edit-meme/bart-chalkboard.js b/commands/edit-meme/bart-chalkboard.js index c1217e23..4c5795e7 100644 --- a/commands/edit-meme/bart-chalkboard.js +++ b/commands/edit-meme/bart-chalkboard.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { shortenText } = require('../../util/Canvas'); +const { shortenText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class LisaPresentationCommand extends Command { constructor(client) { @@ -52,7 +52,7 @@ module.exports = class LisaPresentationCommand extends Command { const shortened = shortenText(ctx, text.toUpperCase(), 500); const arr = []; for (let i = 0; i < 12; i++) arr.push(shortened); - ctx.fillText(arr.join('\n'), 30, 27); + fillTextWithBreaks(ctx, arr.join('\n'), 30, 27); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'bart-chalkboard.png' }] }); } }; diff --git a/commands/edit-meme/be-like-bill.js b/commands/edit-meme/be-like-bill.js index 892dad07..24b45463 100644 --- a/commands/edit-meme/be-like-bill.js +++ b/commands/edit-meme/be-like-bill.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); const texts = require('../../assets/json/be-like-bill'); module.exports = class BeLikeBillCommand extends Command { @@ -50,7 +50,7 @@ module.exports = class BeLikeBillCommand extends Command { ctx.drawImage(base, 0, 0); ctx.font = this.client.fonts.get('arialbd.ttf').toCanvasString(23); const text = wrapText(ctx, texts[Math.floor(Math.random() * texts.length)].replaceAll('{{name}}', name), 569); - ctx.fillText(`This is ${name}.\n\n${text.join('\n')}\n\n${name} is smart.\nBe like ${name}.`, 31, 80); + fillTextWithBreaks(ctx, `This is ${name}.\n\n${text.join('\n')}\n\n${name} is smart.\nBe like ${name}.`, 31, 80); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'be-like-bill.png' }] }); } }; diff --git a/commands/edit-meme/beautiful.js b/commands/edit-meme/beautiful.js index 067b4e29..8e2b8401 100644 --- a/commands/edit-meme/beautiful.js +++ b/commands/edit-meme/beautiful.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/boardroom-meeting.js b/commands/edit-meme/boardroom-meeting.js index 70c04013..3f1411d9 100644 --- a/commands/edit-meme/boardroom-meeting.js +++ b/commands/edit-meme/boardroom-meeting.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class BoardroomMeetingCommand extends Command { diff --git a/commands/edit-meme/catch.js b/commands/edit-meme/catch.js index 48826f18..672a7161 100644 --- a/commands/edit-meme/catch.js +++ b/commands/edit-meme/catch.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { delay } = require('../../util/Util'); diff --git a/commands/edit-meme/challenger.js b/commands/edit-meme/challenger.js index 28135c46..43390c69 100644 --- a/commands/edit-meme/challenger.js +++ b/commands/edit-meme/challenger.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { silhouette, hasAlpha, centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/change-my-mind.js b/commands/edit-meme/change-my-mind.js index 062172f3..236f40a2 100644 --- a/commands/edit-meme/change-my-mind.js +++ b/commands/edit-meme/change-my-mind.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class ChangeMyMindCommand extends Command { constructor(client) { @@ -55,7 +55,7 @@ module.exports = class ChangeMyMindCommand extends Command { ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(fontSize); } const lines = wrapText(ctx, text, 337); - ctx.fillText(lines.join('\n'), 142, 430, 337); + fillTextWithBreaks(ctx, lines.join('\n'), 142, 430, 337); ctx.rotate(24 * (Math.PI / 180)); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'change-my-mind.png' }] }); } diff --git a/commands/edit-meme/chi-idea.js b/commands/edit-meme/chi-idea.js index 344b23c3..c3d4858c 100644 --- a/commands/edit-meme/chi-idea.js +++ b/commands/edit-meme/chi-idea.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/crush.js b/commands/edit-meme/crush.js index ca634990..096d37c4 100644 --- a/commands/edit-meme/crush.js +++ b/commands/edit-meme/crush.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/cursed-sponge.js b/commands/edit-meme/cursed-sponge.js index e43e5260..553a03a7 100644 --- a/commands/edit-meme/cursed-sponge.js +++ b/commands/edit-meme/cursed-sponge.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class CursedSpongeCommand extends Command { diff --git a/commands/edit-meme/dear-liberals.js b/commands/edit-meme/dear-liberals.js index 6cd27b62..d6f374f0 100644 --- a/commands/edit-meme/dear-liberals.js +++ b/commands/edit-meme/dear-liberals.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class DearLiberalsCommand extends Command { constructor(client) { @@ -69,10 +69,10 @@ module.exports = class DearLiberalsCommand extends Command { ctx.fillStyle = '#002046'; ctx.font = this.client.fonts.get('Oswald-SemiBold.ttf').toCanvasString(27); const blueLines = wrapText(ctx, blueText, 270); - ctx.fillText(blueLines.join('\n'), 207, 90); + fillTextWithBreaks(ctx, blueLines.join('\n'), 207, 90); ctx.fillStyle = '#c31a41'; const redLines = wrapText(ctx, redText, 165); - ctx.fillText(redLines.join('\n'), 326, 236); + fillTextWithBreaks(ctx, redLines.join('\n'), 326, 236); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'dear-liberals.png' }] }); } }; diff --git a/commands/edit-meme/deep-fry.js b/commands/edit-meme/deep-fry.js index f70c25ca..0804d5a6 100644 --- a/commands/edit-meme/deep-fry.js +++ b/commands/edit-meme/deep-fry.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { desaturate, contrast } = require('../../util/Canvas'); diff --git a/commands/edit-meme/demotivational.js b/commands/edit-meme/demotivational.js index 1f14baaf..ebabca47 100644 --- a/commands/edit-meme/demotivational.js +++ b/commands/edit-meme/demotivational.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { shortenText, centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/dislike.js b/commands/edit-meme/dislike.js index a8a1ebcd..2a5b4fad 100644 --- a/commands/edit-meme/dislike.js +++ b/commands/edit-meme/dislike.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/distracted-boyfriend.js b/commands/edit-meme/distracted-boyfriend.js index 4445c0a8..2e706628 100644 --- a/commands/edit-meme/distracted-boyfriend.js +++ b/commands/edit-meme/distracted-boyfriend.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/drakeposting.js b/commands/edit-meme/drakeposting.js index 699f556f..481d2250 100644 --- a/commands/edit-meme/drakeposting.js +++ b/commands/edit-meme/drakeposting.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/edd-facts-book.js b/commands/edit-meme/edd-facts-book.js index d172acb8..6db76457 100644 --- a/commands/edit-meme/edd-facts-book.js +++ b/commands/edit-meme/edd-facts-book.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class EddFactsBookCommand extends Command { constructor(client) { @@ -55,7 +55,7 @@ module.exports = class EddFactsBookCommand extends Command { ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(fontSize); } const lines = wrapText(ctx, fact, 183); - ctx.fillText(lines.join('\n'), 119, 306, 183); + fillTextWithBreaks(ctx, lines.join('\n'), 119, 306, 183); ctx.rotate(-15 * (Math.PI / 180)); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'edd-facts-book.png' }] }); } diff --git a/commands/edit-meme/enslaved.js b/commands/edit-meme/enslaved.js index 5d19ae86..278525e4 100644 --- a/commands/edit-meme/enslaved.js +++ b/commands/edit-meme/enslaved.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/food-broke.js b/commands/edit-meme/food-broke.js index f6489571..27c20694 100644 --- a/commands/edit-meme/food-broke.js +++ b/commands/edit-meme/food-broke.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { contrast } = require('../../util/Canvas'); diff --git a/commands/edit-meme/for-five-hours.js b/commands/edit-meme/for-five-hours.js index aec456a6..4ae7927f 100644 --- a/commands/edit-meme/for-five-hours.js +++ b/commands/edit-meme/for-five-hours.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/genie-rules.js b/commands/edit-meme/genie-rules.js index e8f2d369..aa5571b2 100644 --- a/commands/edit-meme/genie-rules.js +++ b/commands/edit-meme/genie-rules.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/girl-worth-fighting-for.js b/commands/edit-meme/girl-worth-fighting-for.js index 1bfac588..f8303085 100644 --- a/commands/edit-meme/girl-worth-fighting-for.js +++ b/commands/edit-meme/girl-worth-fighting-for.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/gru-plan.js b/commands/edit-meme/gru-plan.js index 6a981f76..eee85e06 100644 --- a/commands/edit-meme/gru-plan.js +++ b/commands/edit-meme/gru-plan.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); const coord = [[450, 129], [1200, 134], [450, 627], [1200, 627]]; module.exports = class GruPlanCommand extends Command { @@ -73,7 +73,7 @@ module.exports = class GruPlanCommand extends Command { ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(fontSize); } const lines = wrapText(ctx, step, 252); - ctx.fillText(lines.join('\n'), x, y); + fillTextWithBreaks(ctx, lines.join('\n'), x, y); i++; } return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'gru-plan.png' }] }); diff --git a/commands/edit-meme/i-cant-believe.js b/commands/edit-meme/i-cant-believe.js index 8d4eb26a..6b237a11 100644 --- a/commands/edit-meme/i-cant-believe.js +++ b/commands/edit-meme/i-cant-believe.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { firstUpperCase } = require('../../util/Util'); diff --git a/commands/edit-meme/i-fear-no-man.js b/commands/edit-meme/i-fear-no-man.js index 518dee9b..96b61356 100644 --- a/commands/edit-meme/i-fear-no-man.js +++ b/commands/edit-meme/i-fear-no-man.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/if-those-kids-could-read.js b/commands/edit-meme/if-those-kids-could-read.js index b3f88fc9..3a61baae 100644 --- a/commands/edit-meme/if-those-kids-could-read.js +++ b/commands/edit-meme/if-those-kids-could-read.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/kyon-gun.js b/commands/edit-meme/kyon-gun.js index 11cf97cb..bd4ad009 100644 --- a/commands/edit-meme/kyon-gun.js +++ b/commands/edit-meme/kyon-gun.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/like.js b/commands/edit-meme/like.js index addc245d..8a4a1e57 100644 --- a/commands/edit-meme/like.js +++ b/commands/edit-meme/like.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/lisa-presentation.js b/commands/edit-meme/lisa-presentation.js index 738efd16..fdff54cb 100644 --- a/commands/edit-meme/lisa-presentation.js +++ b/commands/edit-meme/lisa-presentation.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/look-at-this-photograph.js b/commands/edit-meme/look-at-this-photograph.js index 09078c9d..d4530a32 100644 --- a/commands/edit-meme/look-at-this-photograph.js +++ b/commands/edit-meme/look-at-this-photograph.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/look-what-karen-have.js b/commands/edit-meme/look-what-karen-have.js index 1dd8710c..f56975c9 100644 --- a/commands/edit-meme/look-what-karen-have.js +++ b/commands/edit-meme/look-what-karen-have.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/mario-bros-views.js b/commands/edit-meme/mario-bros-views.js index 7f55fd95..4c60b24c 100644 --- a/commands/edit-meme/mario-bros-views.js +++ b/commands/edit-meme/mario-bros-views.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/meme-gen.js b/commands/edit-meme/meme-gen.js index 5949456d..b9f6cdc8 100644 --- a/commands/edit-meme/meme-gen.js +++ b/commands/edit-meme/meme-gen.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/metamorphosis.js b/commands/edit-meme/metamorphosis.js index 2bb56e16..e60308e5 100644 --- a/commands/edit-meme/metamorphosis.js +++ b/commands/edit-meme/metamorphosis.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/my-collection-grows.js b/commands/edit-meme/my-collection-grows.js index 006365e4..a71b3273 100644 --- a/commands/edit-meme/my-collection-grows.js +++ b/commands/edit-meme/my-collection-grows.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/new-password.js b/commands/edit-meme/new-password.js index 876d91ca..8ce91419 100644 --- a/commands/edit-meme/new-password.js +++ b/commands/edit-meme/new-password.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { shortenText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/nike-ad.js b/commands/edit-meme/nike-ad.js index e5bc20a8..680eb2f8 100644 --- a/commands/edit-meme/nike-ad.js +++ b/commands/edit-meme/nike-ad.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { wrapText, greyscale, drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-meme/panik-kalm-panik.js b/commands/edit-meme/panik-kalm-panik.js index be958287..b8875652 100644 --- a/commands/edit-meme/panik-kalm-panik.js +++ b/commands/edit-meme/panik-kalm-panik.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/phoebe-teaching-joey.js b/commands/edit-meme/phoebe-teaching-joey.js index 5ae72189..2f29774e 100644 --- a/commands/edit-meme/phoebe-teaching-joey.js +++ b/commands/edit-meme/phoebe-teaching-joey.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const coord = [ [[136, 135], [416, 135]], diff --git a/commands/edit-meme/pills.js b/commands/edit-meme/pills.js index e58492cc..d4e9b3bd 100644 --- a/commands/edit-meme/pills.js +++ b/commands/edit-meme/pills.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/plankton-plan.js b/commands/edit-meme/plankton-plan.js index 6cdb0b1e..efc7497e 100644 --- a/commands/edit-meme/plankton-plan.js +++ b/commands/edit-meme/plankton-plan.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); const coord = [[240, 63], [689, 63], [705, 383], [220, 380]]; module.exports = class PlanktonPlanCommand extends Command { @@ -73,7 +73,7 @@ module.exports = class PlanktonPlanCommand extends Command { ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(fontSize); } const lines = wrapText(ctx, step, 155); - ctx.fillText(lines.join('\n'), x, y); + fillTextWithBreaks(ctx, lines.join('\n'), x, y); i++; } return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'plankton-plan.png' }] }); diff --git a/commands/edit-meme/raw.js b/commands/edit-meme/raw.js index df23e2db..50c46c71 100644 --- a/commands/edit-meme/raw.js +++ b/commands/edit-meme/raw.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class RawCommand extends Command { diff --git a/commands/edit-meme/reaction-meme.js b/commands/edit-meme/reaction-meme.js index 3403532a..5a8626bf 100644 --- a/commands/edit-meme/reaction-meme.js +++ b/commands/edit-meme/reaction-meme.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class ReactionMemeCommand extends Command { constructor(client) { @@ -58,7 +58,7 @@ module.exports = class ReactionMemeCommand extends Command { ctx.fillStyle = 'white'; ctx.fillRect(0, 0, base.width, linesLen); ctx.fillStyle = 'black'; - ctx.fillText(lines.join('\n'), 5, 5); + fillTextWithBreaks(ctx, lines.join('\n'), 5, 5); ctx.drawImage(base, 0, linesLen); const attachment = canvas.toBuffer(); if (Buffer.byteLength(attachment) > 8e+6) return msg.reply('Resulting image was above 8 MB.'); diff --git a/commands/edit-meme/scroll-of-truth.js b/commands/edit-meme/scroll-of-truth.js index 01e217be..fd579422 100644 --- a/commands/edit-meme/scroll-of-truth.js +++ b/commands/edit-meme/scroll-of-truth.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/sexy-singles.js b/commands/edit-meme/sexy-singles.js index a94c9f79..abc60cfa 100644 --- a/commands/edit-meme/sexy-singles.js +++ b/commands/edit-meme/sexy-singles.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const count = 2; diff --git a/commands/edit-meme/skyrim-skill.js b/commands/edit-meme/skyrim-skill.js index f21caf15..1424d807 100644 --- a/commands/edit-meme/skyrim-skill.js +++ b/commands/edit-meme/skyrim-skill.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/sonic-says.js b/commands/edit-meme/sonic-says.js index a4dae94d..6fa5376c 100644 --- a/commands/edit-meme/sonic-says.js +++ b/commands/edit-meme/sonic-says.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class SonicSaysCommand extends Command { constructor(client) { @@ -55,7 +55,7 @@ module.exports = class SonicSaysCommand extends Command { } const lines = wrapText(ctx, text, 185); ctx.fillStyle = 'white'; - ctx.fillText(lines.join('\n'), 92, 67, 185); + fillTextWithBreaks(ctx, lines.join('\n'), 92, 67, 185); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'sonic-says.png' }] }); } }; diff --git a/commands/edit-meme/sora-selfie.js b/commands/edit-meme/sora-selfie.js index 751a2b22..5a4ff99e 100644 --- a/commands/edit-meme/sora-selfie.js +++ b/commands/edit-meme/sora-selfie.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/sos.js b/commands/edit-meme/sos.js index 5f9b395c..af56040e 100644 --- a/commands/edit-meme/sos.js +++ b/commands/edit-meme/sos.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); module.exports = class SosCommand extends Command { diff --git a/commands/edit-meme/spiderman-pointing.js b/commands/edit-meme/spiderman-pointing.js index ca440b3b..dc2d24e3 100644 --- a/commands/edit-meme/spiderman-pointing.js +++ b/commands/edit-meme/spiderman-pointing.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/spongebob-burn.js b/commands/edit-meme/spongebob-burn.js index c487d243..4da9eda3 100644 --- a/commands/edit-meme/spongebob-burn.js +++ b/commands/edit-meme/spongebob-burn.js @@ -1,8 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); -const { wrapText } = require('../../util/Canvas'); +const { wrapText, fillTextWithBreaks } = require('../../util/Canvas'); module.exports = class SpongebobBurnCommand extends Command { constructor(client) { @@ -61,7 +61,7 @@ module.exports = class SpongebobBurnCommand extends Command { ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(fontSize); } const lines = wrapText(ctx, burn, 180); - ctx.fillText(lines.join('\n'), 55, 103); + fillTextWithBreaks(ctx, lines.join('\n'), 55, 103); ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(25); ctx.fillText(person, 382, 26); ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(20); diff --git a/commands/edit-meme/that-sign-wont-stop-me.js b/commands/edit-meme/that-sign-wont-stop-me.js index 669173d6..d8484a79 100644 --- a/commands/edit-meme/that-sign-wont-stop-me.js +++ b/commands/edit-meme/that-sign-wont-stop-me.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/this-guy.js b/commands/edit-meme/this-guy.js index 46121763..1737e835 100644 --- a/commands/edit-meme/this-guy.js +++ b/commands/edit-meme/this-guy.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/thug-life.js b/commands/edit-meme/thug-life.js index 3e6134c3..1517c00f 100644 --- a/commands/edit-meme/thug-life.js +++ b/commands/edit-meme/thug-life.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { greyscale } = require('../../util/Canvas'); diff --git a/commands/edit-meme/to-be-continued.js b/commands/edit-meme/to-be-continued.js index 4de23439..34bfb832 100644 --- a/commands/edit-meme/to-be-continued.js +++ b/commands/edit-meme/to-be-continued.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { drawImageWithTint } = require('../../util/Canvas'); diff --git a/commands/edit-meme/tuxedo-pooh.js b/commands/edit-meme/tuxedo-pooh.js index 8f239b6c..0d3e3f28 100644 --- a/commands/edit-meme/tuxedo-pooh.js +++ b/commands/edit-meme/tuxedo-pooh.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/two-buttons.js b/commands/edit-meme/two-buttons.js index a0ba77e3..2f8ccbd3 100644 --- a/commands/edit-meme/two-buttons.js +++ b/commands/edit-meme/two-buttons.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/ugly.js b/commands/edit-meme/ugly.js index 9060a643..a8fbdd9d 100644 --- a/commands/edit-meme/ugly.js +++ b/commands/edit-meme/ugly.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/ultimate-tattoo.js b/commands/edit-meme/ultimate-tattoo.js index 2479b38c..27d168a9 100644 --- a/commands/edit-meme/ultimate-tattoo.js +++ b/commands/edit-meme/ultimate-tattoo.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/edit-meme/vietnam-flashbacks.js b/commands/edit-meme/vietnam-flashbacks.js index 8ee92450..5dfc99af 100644 --- a/commands/edit-meme/vietnam-flashbacks.js +++ b/commands/edit-meme/vietnam-flashbacks.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/whiteboard.js b/commands/edit-meme/whiteboard.js index d4315367..f335fece 100644 --- a/commands/edit-meme/whiteboard.js +++ b/commands/edit-meme/whiteboard.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/edit-meme/worse-than-hitler.js b/commands/edit-meme/worse-than-hitler.js index 97a3125c..8f2a375b 100644 --- a/commands/edit-meme/worse-than-hitler.js +++ b/commands/edit-meme/worse-than-hitler.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); diff --git a/commands/edit-meme/worthless.js b/commands/edit-meme/worthless.js index 9ffccdf7..f1c62f5e 100644 --- a/commands/edit-meme/worthless.js +++ b/commands/edit-meme/worthless.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); diff --git a/commands/games-mp/car-race.js b/commands/games-mp/car-race.js index e2720138..05f8c6e7 100644 --- a/commands/games-mp/car-race.js +++ b/commands/games-mp/car-race.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { stripIndents } = require('common-tags'); const path = require('path'); diff --git a/commands/games-mp/chess.js b/commands/games-mp/chess.js index ca932eac..ea9426c5 100644 --- a/commands/games-mp/chess.js +++ b/commands/games-mp/chess.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const jsChess = require('js-chess-engine'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const moment = require('moment'); const validateFEN = require('fen-validator').default; const { stripIndents } = require('common-tags'); diff --git a/commands/games-sp/captcha.js b/commands/games-sp/captcha.js index 124b3ed5..9512aafd 100644 --- a/commands/games-sp/captcha.js +++ b/commands/games-sp/captcha.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ23456789'.split(''); module.exports = class CaptchaCommand extends Command { diff --git a/commands/games-sp/horse-race.js b/commands/games-sp/horse-race.js index 183f89db..69ffbf8b 100644 --- a/commands/games-sp/horse-race.js +++ b/commands/games-sp/horse-race.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const { stripIndents } = require('common-tags'); const { shuffle, randomRange, formatTime } = require('../../util/Util'); diff --git a/commands/games-sp/jeopardy.js b/commands/games-sp/jeopardy.js index ad266f95..9ed593b1 100644 --- a/commands/games-sp/jeopardy.js +++ b/commands/games-sp/jeopardy.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const request = require('node-superfetch'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const path = require('path'); const { reactIfAble } = require('../../util/Util'); const { wrapText } = require('../../util/Canvas'); diff --git a/commands/games-sp/pokemon-advantage.js b/commands/games-sp/pokemon-advantage.js index 29d3038c..ca9e3765 100644 --- a/commands/games-sp/pokemon-advantage.js +++ b/commands/games-sp/pokemon-advantage.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { stripIndents } = require('common-tags'); const { greyscale } = require('../../util/Canvas'); diff --git a/commands/games-sp/typing-test.js b/commands/games-sp/typing-test.js index 3527fc3e..5252c403 100644 --- a/commands/games-sp/typing-test.js +++ b/commands/games-sp/typing-test.js @@ -1,5 +1,5 @@ const Command = require('../../framework/Command'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const { stripIndents } = require('common-tags'); const Diff = require('text-diff'); const { fetchHSUserDisplay } = require('../../util/Util'); diff --git a/commands/games-sp/whos-that-pokemon.js b/commands/games-sp/whos-that-pokemon.js index 11b29038..0b077869 100644 --- a/commands/games-sp/whos-that-pokemon.js +++ b/commands/games-sp/whos-that-pokemon.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const { reactIfAble } = require('../../util/Util'); const { silhouette, centerImagePart } = require('../../util/Canvas'); diff --git a/commands/info/emoji-image.js b/commands/info/emoji-image.js index e278f283..7cb688f0 100644 --- a/commands/info/emoji-image.js +++ b/commands/info/emoji-image.js @@ -2,7 +2,7 @@ const Command = require('../../framework/Command'); const { GuildEmoji, PermissionFlagsBits } = require('discord.js'); const twemoji = require('@twemoji/parser'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); module.exports = class EmojiImageCommand extends Command { constructor(client) { diff --git a/commands/pokedex/pokedex-box-sprite.js b/commands/pokedex/pokedex-box-sprite.js index f8ccfc7b..4833df0a 100644 --- a/commands/pokedex/pokedex-box-sprite.js +++ b/commands/pokedex/pokedex-box-sprite.js @@ -1,6 +1,6 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const { cropToContent } = require('../../util/Canvas'); module.exports = class PokedexBoxSpriteCommand extends Command { diff --git a/commands/random-seed/friendship.js b/commands/random-seed/friendship.js index 5e4a67fa..c8107cf6 100644 --- a/commands/random-seed/friendship.js +++ b/commands/random-seed/friendship.js @@ -1,7 +1,7 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { MersenneTwister19937, integer } = require('random-js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { percentColor } = require('../../util/Util'); diff --git a/commands/random-seed/ship.js b/commands/random-seed/ship.js index d78e2e86..9904f97e 100644 --- a/commands/random-seed/ship.js +++ b/commands/random-seed/ship.js @@ -1,7 +1,7 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { MersenneTwister19937, integer } = require('random-js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { percentColor } = require('../../util/Util'); diff --git a/commands/random-seed/think-of.js b/commands/random-seed/think-of.js index bcdf3c87..f26298d8 100644 --- a/commands/random-seed/think-of.js +++ b/commands/random-seed/think-of.js @@ -1,7 +1,7 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { MersenneTwister19937, integer } = require('random-js'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const request = require('node-superfetch'); const path = require('path'); const { LOVER_USER_ID } = process.env; diff --git a/commands/search/periodic-table.js b/commands/search/periodic-table.js index 1c2c5c9a..c313124b 100644 --- a/commands/search/periodic-table.js +++ b/commands/search/periodic-table.js @@ -1,7 +1,7 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const request = require('node-superfetch'); -const { createCanvas, loadImage } = require('canvas'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); const path = require('path'); const colors = { Solid: 'black', diff --git a/package.json b/package.json index 66059e7a..1e8625aa 100644 --- a/package.json +++ b/package.json @@ -33,11 +33,11 @@ "@discordjs/opus": "^0.9.0", "@discordjs/voice": "^0.16.1", "@mediapipe/face_detection": "^0.4.1646425229", + "@napi-rs/canvas": "^0.1.52", "@tensorflow-models/face-detection": "^1.0.2", "@tensorflow/tfjs-node": "^4.18.0", "@twemoji/parser": "^15.1.1", "bombsweeper.js": "^1.0.1", - "canvas": "^2.11.2", "cheerio": "1.0.0-rc.12", "city-timezones": "^1.2.1", "cloc": "2.0.0-cloc", diff --git a/structures/fonts/Font.js b/structures/fonts/Font.js index a2e40b98..9e925a5c 100644 --- a/structures/fonts/Font.js +++ b/structures/fonts/Font.js @@ -1,4 +1,4 @@ -const { registerFont } = require('canvas'); +const { GlobalFonts } = require('@napi-rs/canvas'); const weights = { 100: 'thin', 200: 'extraLight', @@ -28,12 +28,12 @@ module.exports = class Font { register() { if (this.registered) return null; this.registered = true; - return registerFont(this.path, { family: this.filenameNoExt, style: this.style, weight: this.weight }); + return GlobalFonts.registerFromPath(this.path, this.filenameNoExt); } toCanvasString(size, shouldDoFallbacks = true) { const shouldFall = shouldDoFallbacks ? `, ${this.fallbacks.join(', ')}` : ''; - return `${this.style} ${this.weight} ${size}px ${this.filenameNoExt}${shouldFall}`; + return `${size}px ${this.filenameNoExt}${shouldFall}`; } get filenameNoExt() { diff --git a/structures/pokemon/Pokemon.js b/structures/pokemon/Pokemon.js index ce631380..faa3cbd4 100644 --- a/structures/pokemon/Pokemon.js +++ b/structures/pokemon/Pokemon.js @@ -1,5 +1,5 @@ const request = require('node-superfetch'); -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); const path = require('path'); const { removeDuplicates, firstUpperCase, delay } = require('../../util/Util'); const { cropToContent } = require('../../util/Canvas'); diff --git a/structures/pokemon/PokemonStore.js b/structures/pokemon/PokemonStore.js index 4a2190db..ad6e1112 100644 --- a/structures/pokemon/PokemonStore.js +++ b/structures/pokemon/PokemonStore.js @@ -1,6 +1,6 @@ const { Collection } = require('@discordjs/collection'); const request = require('node-superfetch'); -const { loadImage } = require('canvas'); +const { loadImage } = require('@napi-rs/canvas'); const path = require('path'); const Pokemon = require('./Pokemon'); const MoveStore = require('./MoveStore'); diff --git a/types/font.js b/types/font.js index b7bbc316..cea3654e 100644 --- a/types/font.js +++ b/types/font.js @@ -34,11 +34,7 @@ module.exports = class FontArgument extends Argument { }); if (found.size === 0) return null; if (found.size === 1) return found.first(); - const foundExact = found.filter(font => { - if (font.name.toLowerCase() === choice) return true; - if (font.filenameNoExt.toLowerCase() === choice) return true; - return false; - }); + const foundExact = found.filter(font => font.filenameNoExt.toLowerCase() === choice); if (foundExact.size === 1) return foundExact.first(); return null; } diff --git a/util/Canvas.js b/util/Canvas.js index 879c540f..d5ab12ca 100644 --- a/util/Canvas.js +++ b/util/Canvas.js @@ -1,4 +1,4 @@ -const { createCanvas } = require('canvas'); +const { createCanvas } = require('@napi-rs/canvas'); module.exports = class CanvasUtil { static greyscale(ctx, x, y, width, height) { @@ -197,6 +197,17 @@ module.exports = class CanvasUtil { return ctx; } + static fillTextWithBreaks(ctx, text, x, y, maxLen) { + const lines = text.split('\n'); + let currentY = y; + for (const line of lines) { + ctx.fillText(line, x, currentY, maxLen); + const metrics = ctx.measureText(line); + currentY += metrics.emHeightAscent + metrics.emHeightDescent; + } + return ctx; + } + static shortenText(ctx, text, maxWidth) { let shorten = false; while (ctx.measureText(`${text}...`).width > maxWidth) {