Begin migrating away from stupid "Oh no, an error occurred!"

This commit is contained in:
Dragon Fire
2024-03-29 23:57:49 -04:00
parent 067545b818
commit 0b807767d1
130 changed files with 1692 additions and 2190 deletions
+51 -55
View File
@@ -58,61 +58,57 @@ module.exports = class EjectCommand extends Command {
async run(msg, { user, imposter }) {
const avatarURL = user.displayAvatarURL({ format: 'png', size: 512 });
try {
const { body } = await request.get(avatarURL);
const avatar = await loadImage(body);
if (imposter === '') {
const random = MersenneTwister19937.seed(user.id);
imposter = bool()(random);
}
const text = `${user.username} was${imposter ? ' ' : ' not '}An Imposter.`;
const encoder = new GIFEncoder(320, 180);
const canvas = createCanvas(320, 180);
const ctx = canvas.getContext('2d');
ctx.textAlign = 'center';
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);
encoder.setQuality(200);
for (let i = 0; i < frameCount; i++) {
const frameID = `frame_${i.toString().padStart(2, '0')}.gif`;
const frame = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'eject', frameID));
ctx.drawImage(frame, 0, 0);
if (i <= 17) {
const x = ((320 / 15) * i) - 50;
const y = (frame.height / 2) - 25;
const rotation = (360 / 15) * i;
const angle = rotation * (Math.PI / 180);
const originX = x + 25;
const originY = y + 25;
ctx.translate(originX, originY);
ctx.rotate(-angle);
ctx.translate(-originX, -originY);
ctx.drawImage(avatar, x, y, 50, 50);
ctx.translate(originX, originY);
ctx.rotate(angle);
ctx.translate(-originX, -originY);
}
if (i > 17) {
if (i <= 27) {
const letters = Math.ceil(((text.length / 10) * (i - 17)) + 1);
const toDraw = text.slice(0, letters + 1);
ctx.fillText(toDraw, frame.width / 2, frame.height / 2, 300);
} else {
ctx.fillText(text, frame.width / 2, frame.height / 2, 300);
}
}
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'eject.gif' }] });
} catch (err) {
return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
const { body } = await request.get(avatarURL);
const avatar = await loadImage(body);
if (imposter === '') {
const random = MersenneTwister19937.seed(user.id);
imposter = bool()(random);
}
const text = `${user.username} was${imposter ? ' ' : ' not '}An Imposter.`;
const encoder = new GIFEncoder(320, 180);
const canvas = createCanvas(320, 180);
const ctx = canvas.getContext('2d');
ctx.textAlign = 'center';
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);
encoder.setQuality(200);
for (let i = 0; i < frameCount; i++) {
const frameID = `frame_${i.toString().padStart(2, '0')}.gif`;
const frame = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'eject', frameID));
ctx.drawImage(frame, 0, 0);
if (i <= 17) {
const x = ((320 / 15) * i) - 50;
const y = (frame.height / 2) - 25;
const rotation = (360 / 15) * i;
const angle = rotation * (Math.PI / 180);
const originX = x + 25;
const originY = y + 25;
ctx.translate(originX, originY);
ctx.rotate(-angle);
ctx.translate(-originX, -originY);
ctx.drawImage(avatar, x, y, 50, 50);
ctx.translate(originX, originY);
ctx.rotate(angle);
ctx.translate(-originX, -originY);
}
if (i > 17) {
if (i <= 27) {
const letters = Math.ceil(((text.length / 10) * (i - 17)) + 1);
const toDraw = text.slice(0, letters + 1);
ctx.fillText(toDraw, frame.width / 2, frame.height / 2, 300);
} else {
ctx.fillText(text, frame.width / 2, frame.height / 2, 300);
}
}
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'eject.gif' }] });
}
};