diff --git a/README.md b/README.md index 1089cc93..772fdb0a 100644 --- a/README.md +++ b/README.md @@ -684,6 +684,7 @@ Total: 518 * [@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) +* [@skyra/gifenc](https://www.npmjs.com/package/@skyra/gifenc) * [@snazzah/davey](https://www.npmjs.com/package/@snazzah/davey) * [@tensorflow-models/face-detection](https://www.npmjs.com/package/@tensorflow-models/face-detection) * [@tensorflow/tfjs-node](https://www.npmjs.com/package/@tensorflow/tfjs-node) @@ -703,7 +704,6 @@ Total: 518 * [emoji-regex](https://www.npmjs.com/package/emoji-regex) * [fen-validator](https://www.npmjs.com/package/fen-validator) * [font-finder](https://www.npmjs.com/package/font-finder) -* [gifencoder](https://www.npmjs.com/package/gifencoder) * [gm](https://www.npmjs.com/package/gm) * [html-entities](https://www.npmjs.com/package/html-entities) * [image-to-ascii](https://www.npmjs.com/package/image-to-ascii) diff --git a/commands/edit-avatar/eject.js b/commands/edit-avatar/eject.js index 6298f6ea..0874d2a2 100644 --- a/commands/edit-avatar/eject.js +++ b/commands/edit-avatar/eject.js @@ -1,8 +1,9 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { createCanvas, loadImage } = require('@napi-rs/canvas'); -const GIFEncoder = require('gifencoder'); +const { GifEncoder } = require('@skyra/gifenc'); const { MersenneTwister19937, bool } = require('random-js'); +const { buffer } = require('node:stream/consumers'); const request = require('node-superfetch'); const path = require('path'); const frameCount = 52; @@ -55,7 +56,8 @@ module.exports = class EjectCommand extends Command { const random = MersenneTwister19937.seed(user.id); const imposter = bool()(random); const text = `${user.username} was${imposter ? ' ' : ' not '}An Imposter.`; - const encoder = new GIFEncoder(320, 180); + const encoder = new GifEncoder(320, 180); + const stream = encoder.createReadStream(); const canvas = createCanvas(320, 180); const ctx = canvas.getContext('2d'); ctx.textAlign = 'center'; @@ -97,7 +99,7 @@ module.exports = class EjectCommand extends Command { encoder.addFrame(ctx); } encoder.finish(); - const attachment = encoder.out.getData(); + const attachment = await buffer(stream); return msg.say({ files: [{ attachment, name: 'eject.gif' }] }); } }; diff --git a/commands/edit-avatar/triggered.js b/commands/edit-avatar/triggered.js index 516ce39a..907bd737 100644 --- a/commands/edit-avatar/triggered.js +++ b/commands/edit-avatar/triggered.js @@ -1,8 +1,9 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { createCanvas, loadImage } = require('@napi-rs/canvas'); -const GIFEncoder = require('gifencoder'); +const { GifEncoder } = require('@skyra/gifenc'); const request = require('node-superfetch'); +const { buffer } = require('node:stream/consumers'); const path = require('path'); const { drawImageWithTint } = require('../../util/Canvas'); const coord1 = [-25, -33, -42, -14]; @@ -44,7 +45,8 @@ module.exports = class TriggeredCommand extends Command { const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'triggered.png')); const { body } = await request.get(avatarURL); const avatar = await loadImage(body); - const encoder = new GIFEncoder(base.width, base.width); + const encoder = new GifEncoder(base.width, base.width); + const stream = encoder.createReadStream(); const canvas = createCanvas(base.width, base.width); const ctx = canvas.getContext('2d'); ctx.fillStyle = 'white'; @@ -59,7 +61,7 @@ module.exports = class TriggeredCommand extends Command { encoder.addFrame(ctx); } encoder.finish(); - const attachment = encoder.out.getData(); + const attachment = await buffer(stream); return msg.say({ files: [{ attachment, name: 'triggered.gif' }] }); } }; diff --git a/commands/edit-image/pet.js b/commands/edit-image/pet.js index 53c8725a..136df748 100644 --- a/commands/edit-image/pet.js +++ b/commands/edit-image/pet.js @@ -1,7 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { createCanvas, loadImage } = require('@napi-rs/canvas'); -const GIFEncoder = require('gifencoder'); +const { GifEncoder } = require('@skyra/gifenc'); +const { buffer } = require('node:stream/consumers'); const request = require('node-superfetch'); const path = require('path'); const { centerImagePart } = require('../../util/Canvas'); @@ -32,7 +33,8 @@ module.exports = class PetCommand extends Command { async run(msg, { image }) { const { body } = await request.get(image); const data = await loadImage(body); - const encoder = new GIFEncoder(112, 112); + const encoder = new GifEncoder(112, 112); + const stream = encoder.createReadStream(); const canvas = createCanvas(112, 112); const ctx = canvas.getContext('2d'); encoder.start(); @@ -53,7 +55,7 @@ module.exports = class PetCommand extends Command { else squish += 4; } encoder.finish(); - const attachment = encoder.out.getData(); + const attachment = await buffer(stream); return msg.say({ files: [{ attachment, name: 'pet.gif' }] }); } }; diff --git a/commands/edit-image/shake.js b/commands/edit-image/shake.js index bd3dc7b3..af9f8028 100644 --- a/commands/edit-image/shake.js +++ b/commands/edit-image/shake.js @@ -1,7 +1,8 @@ const Command = require('../../framework/Command'); const { PermissionFlagsBits } = require('discord.js'); const { createCanvas, loadImage } = require('@napi-rs/canvas'); -const GIFEncoder = require('gifencoder'); +const { GifEncoder } = require('@skyra/gifenc'); +const { buffer } = require('node:stream/consumers'); const request = require('node-superfetch'); module.exports = class ShakeCommand extends Command { @@ -38,7 +39,8 @@ module.exports = class ShakeCommand extends Command { const base = await loadImage(body); const ratio = base.width / base.height; const height = 512 / ratio; - const encoder = new GIFEncoder(512, height); + const encoder = new GifEncoder(512, height); + const stream = encoder.createReadStream(); const canvas = createCanvas(512, height); const ctx = canvas.getContext('2d'); encoder.start(); @@ -52,7 +54,7 @@ module.exports = class ShakeCommand extends Command { encoder.addFrame(ctx); } encoder.finish(); - const attachment = encoder.out.getData(); + const attachment = await buffer(stream); return msg.say({ files: [{ attachment, name: 'shake.gif' }] }); } diff --git a/package.json b/package.json index 638a0d96..ab09fcbe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "155.2.1", + "version": "155.2.2", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": { @@ -33,6 +33,7 @@ "@discordjs/voice": "^0.19.0", "@mediapipe/face_detection": "^0.4.1646425229", "@napi-rs/canvas": "^0.1.78", + "@skyra/gifenc": "^1.0.1", "@snazzah/davey": "^0.1.6", "@tensorflow-models/face-detection": "^1.0.3", "@tensorflow/tfjs-node": "^4.22.0", @@ -51,7 +52,6 @@ "emoji-regex": "^10.5.0", "fen-validator": "^2.0.1", "font-finder": "^1.1.0", - "gifencoder": "^2.0.1", "gm": "^1.25.1", "html-entities": "^2.6.0", "image-to-ascii": "^3.2.2",