UNPKG

@getsolara/solara.canvas

Version:

Optional canvas and image manipulation functionality for @getsolara/solara.js

40 lines 2.64 kB
const { AttachmentBuilder } = require('discord.js'); module.exports = { name: "$levelUpCard", description: "Generates a Level Up card image. Args: username;oldLevel;newLevel;[avatarURL?];[backgroundURL?];[borderColor?];[avatarBorderColor?];[overlayOpacity?]", takesBrackets: true, execute: async (context, args) => { if (context.client.canvasInitialized === false) { return "[Error: $levelUpCard requires canvas features to be enabled. Ensure @getsolara/solara.canvas is installed and configured correctly.]"; } if (args.length < 3) return "[Error: $levelUpCard requires username, oldLevel, and newLevel]"; const [username, oldLevelStr, newLevelStr, avatar, background, border, avatarBorder, opacityStr] = args; const oldLevel = parseInt(oldLevelStr, 10); const newLevel = parseInt(newLevelStr, 10); const opacity = opacityStr ? parseFloat(opacityStr) : undefined; if (isNaN(oldLevel) || isNaN(newLevel)) return "[Error: Levels for $levelUpCard must be numbers]"; if (opacity !== undefined && isNaN(opacity)) return "[Error: Invalid opacity value for $levelUpCard. Must be a number.]"; try { const canvafy = require("canvafy"); const builder = new canvafy.LevelUp().setUsername(username).setLevels(oldLevel, newLevel); if (avatar) builder.setAvatar(avatar); else if (context.user) builder.setAvatar(context.user.displayAvatarURL({ forceStatic: true, extension: "png" })); if (background) builder.setBackground("image", background); if (border) builder.setBorder(border); if (avatarBorder) builder.setAvatarBorder(avatarBorder); if (opacity !== undefined) builder.setOverlayOpacity(opacity); const imageBuffer = await builder.build(); const attachment = new AttachmentBuilder(imageBuffer, { name: `levelup-${context.user?.id || Date.now()}.png` }); context.attachments = context.attachments || []; context.attachments.push(attachment); return ""; } catch (e) { if (e.code === 'MODULE_NOT_FOUND' && e.message.includes('canvafy')) { console.error("Solara.canvas ($levelUpCard): 'canvafy' module not found. This is a dependency of @getsolara/solara.canvas."); return "[Error: $levelUpCard - canvafy module missing.]"; } console.error("Solara.canvas Error ($levelUpCard):", e); return `[Error generating levelup card: ${e.message}]`; } } };