From 6dde8d7d99b3b714aecb176d4aeb8fcf6fcf5e5b Mon Sep 17 00:00:00 2001 From: Dragon Fire Date: Sun, 1 Sep 2024 12:42:59 -0400 Subject: [PATCH] Trans Flag Command --- README.md | 1 + assets/images/trans.png | Bin 0 -> 7507 bytes commands/edit-image/trans.js | 43 +++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 assets/images/trans.png create mode 100644 commands/edit-image/trans.js diff --git a/README.md b/README.md index 6e20ffe8..ecf1f225 100644 --- a/README.md +++ b/README.md @@ -478,6 +478,7 @@ Total: 514 * **subtitle:** Adds subtitles to an image. * **swirl:** Draws an image or a user's avatar but swirled. * **tint:** Draws an image or a user's avatar but tinted a specific color. +* **trans:** Draws an image or a user's avatar but with a Transgender flag on it. * **vignette:** Draws an image or a user's avatar with a vignette. * **wanted:** Draws an image or a user's avatar over a wanted poster. * **wild-pokemon:** Draws an image or a user's avatar over a wild Pokémon appearance. diff --git a/assets/images/trans.png b/assets/images/trans.png new file mode 100644 index 0000000000000000000000000000000000000000..72afc9173cdfe0fcb8573b33205cc129fbaa13b3 GIT binary patch literal 7507 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 literal 0 HcmV?d00001 diff --git a/commands/edit-image/trans.js b/commands/edit-image/trans.js new file mode 100644 index 00000000..ab2d2518 --- /dev/null +++ b/commands/edit-image/trans.js @@ -0,0 +1,43 @@ +const Command = require('../../framework/Command'); +const { PermissionFlagsBits } = require('discord.js'); +const { createCanvas, loadImage } = require('@napi-rs/canvas'); +const request = require('node-superfetch'); +const path = require('path'); + +module.exports = class TransCommand extends Command { + constructor(client) { + super(client, { + name: 'trans', + aliases: ['transgender'], + group: 'edit-image', + description: 'Draws an image or a user\'s avatar but with a Transgender flag on it.', + throttling: { + usages: 2, + duration: 10 + }, + clientPermissions: [PermissionFlagsBits.AttachFiles], + args: [ + { + key: 'image', + type: 'image-or-avatar', + avatarSize: 512, + default: msg => msg.author.displayAvatarURL({ extension: 'png', size: 512 }) + } + ] + }); + } + + async run(msg, { image }) { + const { body } = await request.get(image); + const data = await loadImage(body); + const transFlag = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'trans.png')); + const canvas = createCanvas(data.width, data.height); + const ctx = canvas.getContext('2d'); + ctx.drawImage(data, 0, 0); + ctx.globalAlpha = 0.5; + ctx.drawImage(transFlag, 0, 0, data.width, data.height); + const attachment = canvas.toBuffer('image/png'); + if (Buffer.byteLength(attachment) > 2.5e+7) return msg.reply('Resulting image was above 25 MB.'); + return msg.say({ files: [{ attachment, name: 'trans.png' }] }); + } +};