mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-03 23:36:43 +02:00
Use gif-encoder-2
This commit is contained in:
@@ -1,11 +1,10 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const { MersenneTwister19937, bool } = require('random-js');
|
||||
const request = require('node-superfetch');
|
||||
const path = require('path');
|
||||
const { streamToArray } = require('../../util/Util');
|
||||
const frameCount = 52;
|
||||
|
||||
module.exports = class EjectCommand extends Command {
|
||||
@@ -71,7 +70,6 @@ module.exports = class EjectCommand extends Command {
|
||||
ctx.textBaseline = 'middle';
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(18);
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(100);
|
||||
@@ -107,7 +105,7 @@ module.exports = class EjectCommand extends Command {
|
||||
encoder.addFrame(ctx);
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'eject.gif' }] });
|
||||
const attachment = encoder.out.getData();
|
||||
return msg.say({ files: [{ attachment, name: 'eject.gif' }] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const request = require('node-superfetch');
|
||||
const path = require('path');
|
||||
const { streamToArray, reactIfAble } = require('../../util/Util');
|
||||
const { reactIfAble } = require('../../util/Util');
|
||||
const { drawImageWithTint } = require('../../util/Canvas');
|
||||
const frameCount = 46;
|
||||
const { LOADING_EMOJI_ID, SUCCESS_EMOJI_ID } = process.env;
|
||||
@@ -48,7 +48,6 @@ module.exports = class FireCommand extends Command {
|
||||
const encoder = new GIFEncoder(avatar.width, avatar.height);
|
||||
const canvas = createCanvas(avatar.width, avatar.height);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(0);
|
||||
@@ -62,8 +61,8 @@ module.exports = class FireCommand extends Command {
|
||||
encoder.addFrame(ctx);
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
const attachment = encoder.out.getData();
|
||||
reactIfAble(msg, msg.author, SUCCESS_EMOJI_ID, '✅');
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'fire.gif' }] });
|
||||
return msg.say({ files: [{ attachment, name: 'fire.gif' }] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const request = require('node-superfetch');
|
||||
const path = require('path');
|
||||
const { streamToArray, reactIfAble } = require('../../util/Util');
|
||||
const { reactIfAble } = require('../../util/Util');
|
||||
const { distort } = require('../../util/Canvas');
|
||||
const { LOADING_EMOJI_ID, SUCCESS_EMOJI_ID } = process.env;
|
||||
const frameCount = 249;
|
||||
@@ -54,7 +54,6 @@ module.exports = class MatrixCommand extends Command {
|
||||
const encoder = new GIFEncoder(avatar.width, avatar.height);
|
||||
const canvas = createCanvas(avatar.width, avatar.height);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(0);
|
||||
@@ -72,8 +71,8 @@ module.exports = class MatrixCommand extends Command {
|
||||
encoder.addFrame(ctx);
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
const attachment = encoder.out.getData();
|
||||
reactIfAble(msg, msg.author, SUCCESS_EMOJI_ID, '✅');
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'matrix.gif' }] });
|
||||
return msg.say({ files: [{ attachment, name: 'matrix.gif' }] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const request = require('node-superfetch');
|
||||
const path = require('path');
|
||||
const { streamToArray } = require('../../util/Util');
|
||||
const { drawImageWithTint } = require('../../util/Canvas');
|
||||
const coord1 = [-25, -33, -42, -14];
|
||||
const coord2 = [-25, -13, -34, -10];
|
||||
@@ -51,7 +50,6 @@ module.exports = class TriggeredCommand extends Command {
|
||||
const ctx = canvas.getContext('2d');
|
||||
ctx.fillStyle = 'white';
|
||||
ctx.fillRect(0, 0, base.width, base.width);
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(50);
|
||||
@@ -62,7 +60,7 @@ module.exports = class TriggeredCommand extends Command {
|
||||
encoder.addFrame(ctx);
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'triggered.gif' }] });
|
||||
const attachment = encoder.out.getData();
|
||||
return msg.say({ files: [{ attachment, name: 'triggered.gif' }] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const request = require('node-superfetch');
|
||||
const path = require('path');
|
||||
const { streamToArray } = require('../../util/Util');
|
||||
const { centerImagePart } = require('../../util/Canvas');
|
||||
const frameCount = 10;
|
||||
|
||||
@@ -36,7 +35,6 @@ module.exports = class PetCommand extends Command {
|
||||
const encoder = new GIFEncoder(112, 112);
|
||||
const canvas = createCanvas(112, 112);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(20);
|
||||
@@ -55,7 +53,7 @@ module.exports = class PetCommand extends Command {
|
||||
else squish += 4;
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'pet.gif' }] });
|
||||
const attachment = encoder.out.getData();
|
||||
return msg.say({ files: [{ attachment, name: 'pet.gif' }] });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
const Command = require('../../framework/Command');
|
||||
const { PermissionFlagsBits } = require('discord.js');
|
||||
const { createCanvas, loadImage } = require('canvas');
|
||||
const GIFEncoder = require('gifencoder');
|
||||
const GIFEncoder = require('gif-encoder-2');
|
||||
const request = require('node-superfetch');
|
||||
const { streamToArray } = require('../../util/Util');
|
||||
|
||||
module.exports = class ShakeCommand extends Command {
|
||||
constructor(client) {
|
||||
@@ -42,7 +41,6 @@ module.exports = class ShakeCommand extends Command {
|
||||
const encoder = new GIFEncoder(512, height);
|
||||
const canvas = createCanvas(512, height);
|
||||
const ctx = canvas.getContext('2d');
|
||||
const stream = encoder.createReadStream();
|
||||
encoder.start();
|
||||
encoder.setRepeat(0);
|
||||
encoder.setDelay(20);
|
||||
@@ -54,8 +52,8 @@ module.exports = class ShakeCommand extends Command {
|
||||
encoder.addFrame(ctx);
|
||||
}
|
||||
encoder.finish();
|
||||
const buffer = await streamToArray(stream);
|
||||
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'shake.gif' }] });
|
||||
const attachment = encoder.out.getData();
|
||||
return msg.say({ files: [{ attachment, name: 'shake.gif' }] });
|
||||
}
|
||||
|
||||
generateFrames(amount) {
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@
|
||||
"emoji-regex": "^10.3.0",
|
||||
"fen-validator": "^2.0.1",
|
||||
"font-finder": "^1.1.0",
|
||||
"gifencoder": "^2.0.1",
|
||||
"gif-encoder-2": "^1.0.5",
|
||||
"gm": "^1.25.0",
|
||||
"html-entities": "^2.5.2",
|
||||
"image-to-ascii": "^3.2.0",
|
||||
|
||||
@@ -137,35 +137,6 @@ module.exports = class Util {
|
||||
return a;
|
||||
}
|
||||
|
||||
static streamToArray(stream) {
|
||||
if (!stream.readable) return Promise.resolve([]);
|
||||
return new Promise((resolve, reject) => {
|
||||
const array = [];
|
||||
function onData(data) {
|
||||
array.push(data);
|
||||
}
|
||||
function onEnd(error) {
|
||||
if (error) reject(error);
|
||||
else resolve(array);
|
||||
cleanup();
|
||||
}
|
||||
function onClose() {
|
||||
resolve(array);
|
||||
cleanup();
|
||||
}
|
||||
function cleanup() {
|
||||
stream.removeListener('data', onData);
|
||||
stream.removeListener('end', onEnd);
|
||||
stream.removeListener('error', onEnd);
|
||||
stream.removeListener('close', onClose);
|
||||
}
|
||||
stream.on('data', onData);
|
||||
stream.on('end', onEnd);
|
||||
stream.on('error', onEnd);
|
||||
stream.on('close', onClose);
|
||||
});
|
||||
}
|
||||
|
||||
static percentColor(pct, percentColors) {
|
||||
let i = 1;
|
||||
for (i; i < percentColors.length - 1; i++) {
|
||||
|
||||
Reference in New Issue
Block a user