304 lines
9.9 KiB
JavaScript
304 lines
9.9 KiB
JavaScript
|
// const Levels = require("discord-xp");
|
||
|
// const Canvas = require("canvas"),
|
||
|
// Discord = require(`discord.js`);
|
||
|
// const { registerFont } = require("canvas");
|
||
|
// registerFont("./util/assets/fonts/Poppins-Regular.ttf", {
|
||
|
// family: "Poppins-Regular",
|
||
|
// });
|
||
|
// registerFont("./util/assets/fonts/Poppins-SemiBold.ttf", {
|
||
|
// family: "Poppins-Bold",
|
||
|
// });
|
||
|
// module.exports = {
|
||
|
// name: "rank",
|
||
|
// description: "Shows an image of someone's ranking",
|
||
|
// type: "CHAT_INPUT",
|
||
|
// options: [
|
||
|
// {
|
||
|
// type: 6,
|
||
|
// name: "user",
|
||
|
// description: "The user you want to see",
|
||
|
// required: false,
|
||
|
// },
|
||
|
// ],
|
||
|
// run: async (client, interaction, args) => {
|
||
|
// const badges = [1, 8];
|
||
|
// for (let i = badges[0]; i <= badges[1]; i++) client[`badge${i}`] = null;
|
||
|
// setBadge = function (variable, value) {
|
||
|
// const number = Number(variable);
|
||
|
// for (let i = badges[0]; i <= badges[1]; i++)
|
||
|
// if (number === i) {
|
||
|
// client[`badge${number}`] = value;
|
||
|
// break;
|
||
|
// }
|
||
|
// return client;
|
||
|
// };
|
||
|
|
||
|
// const member =
|
||
|
// interaction.guild.members.cache.get(args[0]) || interaction.member;
|
||
|
|
||
|
// const user = await Levels.fetch(member.id, interaction.guild.id);
|
||
|
// console.log(user);
|
||
|
// const canvas = Canvas.createCanvas(1080, 400),
|
||
|
// ctx = canvas.getContext("2d");
|
||
|
|
||
|
// let BackgroundRadius = "50", //50 | 0 if u want no rounded background | 50 if u want a very rounded background
|
||
|
// BackGroundImg = "https://images7.alphacoders.com/109/1092420.jpg",
|
||
|
// AttachmentName = "rank.png",
|
||
|
// Username = member.user.username,
|
||
|
// AvatarRoundRadius = "50", // 30 if u want squared round Avatar | 100 IF u want rounded
|
||
|
// DrawLayerColor = "#000000",
|
||
|
// DrawLayerOpacity = "0.4",
|
||
|
// BoxColor = "#6eaedb", //Lvl and REP Box COlor
|
||
|
// LevelBarFill = "#ffffff", //
|
||
|
// LevelBarBackground = "#ffffff",
|
||
|
// Rank = user.position,
|
||
|
// TextEXP = "20XP",
|
||
|
// TextReputation = "+ 2.18k rep",
|
||
|
// BarRadius = "15",
|
||
|
// TextXpNeded = "{current}/{needed}",
|
||
|
// CurrentXP = user.xp,
|
||
|
// NeededXP = Levels.xpFor(parseInt(user.level) + 1);
|
||
|
|
||
|
// //SET BADGES
|
||
|
// //setBadge("1", "Bronze") // .png | file name need to be Number_Name in this case is "1_bronze"
|
||
|
// //setBadge("2", "Gold") // .png | file name need to be Number_Name in this case is "2_Gold"
|
||
|
// //SET BADGES
|
||
|
|
||
|
// //BackGround
|
||
|
// ctx.beginPath();
|
||
|
// ctx.moveTo(0 + Number(BackgroundRadius), 0);
|
||
|
// ctx.lineTo(0 + 1080 - Number(BackgroundRadius), 0);
|
||
|
// ctx.quadraticCurveTo(0 + 1080, 0, 0 + 1080, 0 + Number(BackgroundRadius));
|
||
|
// ctx.lineTo(0 + 1080, 0 + 400 - Number(BackgroundRadius));
|
||
|
// ctx.quadraticCurveTo(
|
||
|
// 0 + 1080,
|
||
|
// 0 + 400,
|
||
|
// 0 + 1080 - Number(BackgroundRadius),
|
||
|
// 0 + 400
|
||
|
// );
|
||
|
|
||
|
// ctx.lineTo(0 + Number(BackgroundRadius), 0 + 400);
|
||
|
// ctx.quadraticCurveTo(0, 0 + 400, 0, 0 + 400 - Number(BackgroundRadius));
|
||
|
// ctx.lineTo(0, 0 + Number(BackgroundRadius));
|
||
|
// ctx.quadraticCurveTo(0, 0, 0 + Number(BackgroundRadius), 0);
|
||
|
// ctx.closePath();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = "#000000";
|
||
|
// ctx.fillRect(0, 0, 1080, 400);
|
||
|
// let background = await Canvas.loadImage(BackGroundImg);
|
||
|
// ctx.drawImage(background, 0, 0, 1080, 400);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// //Layer
|
||
|
// ctx.fillStyle = DrawLayerColor;
|
||
|
// ctx.globalAlpha = DrawLayerOpacity;
|
||
|
// ctx.fillRect(40, 0, 240, canvas.height);
|
||
|
// ctx.globalAlpha = 1;
|
||
|
|
||
|
// //RoundedBox Function
|
||
|
// function RoundedBox(ctx, x, y, width, height, radius) {
|
||
|
// ctx.beginPath();
|
||
|
// ctx.moveTo(x + radius, y);
|
||
|
// ctx.lineTo(x + width - radius, y);
|
||
|
// ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
|
||
|
// ctx.lineTo(x + width, y + height - radius);
|
||
|
// ctx.quadraticCurveTo(
|
||
|
// x + width,
|
||
|
// y + height,
|
||
|
// x + width - radius,
|
||
|
// y + height
|
||
|
// );
|
||
|
// ctx.lineTo(x + radius, y + height);
|
||
|
// ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
|
||
|
// ctx.lineTo(x, y + radius);
|
||
|
// ctx.quadraticCurveTo(x, y, x + radius, y);
|
||
|
// ctx.closePath();
|
||
|
// }
|
||
|
|
||
|
// //Avatar
|
||
|
// let avatar = await Canvas.loadImage(
|
||
|
// member.user.displayAvatarURL({ dynamic: true, format: "png" })
|
||
|
// );
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 40 + 30, 30, 180, 180, Number(AvatarRoundRadius));
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.drawImage(avatar, 40 + 30, 30, 180, 180);
|
||
|
// ctx.restore();
|
||
|
// //Avatar
|
||
|
|
||
|
// //Reputation
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 40 + 30, 30 + 180 + 30, 180, 50, 10);
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = BoxColor;
|
||
|
// ctx.globalAlpha = "1";
|
||
|
// ctx.fillRect(40 + 30, 30 + 180 + 30, 180, 50, 50);
|
||
|
// ctx.globalAlpha = 1;
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.shadowColor = "#000000";
|
||
|
// ctx.shadowBlur = 20;
|
||
|
// ctx.shadowOffsetX = 1;
|
||
|
// ctx.shadowOffsetY = 1;
|
||
|
// ctx.font = '32px "Poppins-Bold"';
|
||
|
// ctx.textAlign = "center";
|
||
|
// ctx.fillText(TextReputation, 40 + 30 + 180 / 2, 30 + 180 + 30 + 38);
|
||
|
// ctx.restore();
|
||
|
// //Reputation
|
||
|
|
||
|
// //EXP
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 40 + 30, 30 + 180 + 30 + 50 + 30, 180, 50, 10);
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = BoxColor;
|
||
|
// ctx.globalAlpha = "1";
|
||
|
// ctx.fillRect(40 + 30, 30 + 180 + 30 + 50 + 30, 180, 50);
|
||
|
// ctx.globalAlpha = 1;
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.shadowColor = "#000000";
|
||
|
// ctx.shadowBlur = 20;
|
||
|
// ctx.shadowOffsetX = 1;
|
||
|
// ctx.shadowOffsetY = 1;
|
||
|
// ctx.font = '32px "Poppins-Bold"';
|
||
|
// ctx.textAlign = "center";
|
||
|
// ctx.fillText(TextEXP, 40 + 30 + 180 / 2, 30 + 180 + 30 + 30 + 50 + 38);
|
||
|
// ctx.restore();
|
||
|
// //EXP
|
||
|
|
||
|
// //ctx.save()
|
||
|
// //ctx.textAlign = "left";
|
||
|
// //ctx.fillStyle = "#ffffff";
|
||
|
// //ctx.shadowColor = '#000000';
|
||
|
// //ctx.font = '15px "Poppins-Bold"'
|
||
|
// //ctx.fillText(member.user.username, 390, 200);
|
||
|
// //ctx.restore()
|
||
|
|
||
|
// //Username
|
||
|
// ctx.save();
|
||
|
// ctx.textAlign = "left";
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.shadowColor = "#000000";
|
||
|
// ctx.shadowBlur = 15;
|
||
|
// ctx.shadowOffsetX = 1;
|
||
|
// ctx.shadowOffsetY = 1;
|
||
|
// ctx.font = '39px "Poppins-Bold"';
|
||
|
// ctx.fillText(Username, 390, 80);
|
||
|
// ctx.restore();
|
||
|
// //Username
|
||
|
|
||
|
// //Rank
|
||
|
// ctx.save();
|
||
|
// ctx.textAlign = "right";
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.shadowColor = "#000000";
|
||
|
// ctx.shadowBlur = 15;
|
||
|
// ctx.shadowOffsetX = 1;
|
||
|
// ctx.shadowOffsetY = 1;
|
||
|
// ctx.font = '55px "Poppins-Bold"';
|
||
|
// ctx.fillText("#" + Rank, canvas.width - 50 - 5, 80);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// //Rank Name
|
||
|
// ctx.save();
|
||
|
// ctx.textAlign = "left";
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.shadowColor = "#000000";
|
||
|
// ctx.shadowBlur = 15;
|
||
|
// ctx.shadowOffsetX = 1;
|
||
|
// ctx.shadowOffsetY = 1;
|
||
|
// ctx.font = '30px "Poppins-Bold"';
|
||
|
// ctx.fillText("Diamond Nature", 390, 120);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// //Badges
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 390, 305, 660, 70, Number(15));
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.globalAlpha = "0.2";
|
||
|
// ctx.fillRect(390, 305, 660, 70);
|
||
|
// ctx.restore();
|
||
|
// const badgeNames = ["1", "2", "3", "4", "5", "6", "7", "8"];
|
||
|
// for (let index = 0; index < badgeNames.length; index++) {
|
||
|
// let badge = `badge${index + 1}`;
|
||
|
// if (!client[badge]) {
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.globalAlpha = "0.2";
|
||
|
// ctx.textAlign = "center";
|
||
|
// ctx.font = '90px "Poppins-Bold"';
|
||
|
// ctx.fillText(".", 75 * index + 450, 345);
|
||
|
// } else {
|
||
|
// ctx.globalAlpha = 1;
|
||
|
// let badgeImg = await Canvas.loadImage(
|
||
|
// ["bronze", "silver", "gold", "diamond"].includes(
|
||
|
// client[badge].toLowerCase()
|
||
|
// )
|
||
|
// ? `${__dirname}/${badgeNames[index]}_${client[
|
||
|
// badge
|
||
|
// ].toLowerCase()}.png`
|
||
|
// : client[badge]
|
||
|
// );
|
||
|
// ctx.drawImage(badgeImg, 75 * index + 420, 315, 50, 50);
|
||
|
// }
|
||
|
// }
|
||
|
// //Badges
|
||
|
|
||
|
// //Level Bar
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 390, 145, 660, 50, Number(BarRadius));
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = LevelBarBackground;
|
||
|
// ctx.globalAlpha = "0.2";
|
||
|
// ctx.fillRect(390, 145, 660, 50, 50);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// const percent = (100 * CurrentXP) / NeededXP;
|
||
|
// const progress = (percent * 660) / 100;
|
||
|
|
||
|
// ctx.save();
|
||
|
// RoundedBox(ctx, 390, 145, progress, 50, Number(BarRadius));
|
||
|
// ctx.strokeStyle = "#BFC85A22";
|
||
|
// ctx.stroke();
|
||
|
// ctx.clip();
|
||
|
// ctx.fillStyle = LevelBarFill;
|
||
|
// ctx.globalAlpha = "0.5";
|
||
|
// ctx.fillRect(390, 145, progress, 50, 50);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// //Next Rank
|
||
|
// ctx.save();
|
||
|
// ctx.textAlign = "left";
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.globalAlpha = "0.8";
|
||
|
// ctx.font = '30px "Poppins-Bold"';
|
||
|
// ctx.fillText("Next Rank: " + "None", 390, 230);
|
||
|
// ctx.restore();
|
||
|
|
||
|
// const latestXP = Number(CurrentXP) - Number(NeededXP);
|
||
|
// const textXPEdited = TextXpNeded.replace(/{needed}/g, NeededXP)
|
||
|
// .replace(/{current}/g, CurrentXP)
|
||
|
// .replace(/{latest}/g, latestXP);
|
||
|
// ctx.textAlign = "center";
|
||
|
// ctx.fillStyle = "#ffffff";
|
||
|
// ctx.globalAlpha = 1;
|
||
|
// ctx.font = '30px "Poppins-Bold"';
|
||
|
// ctx.fillText(textXPEdited, 730, 180);
|
||
|
// //Level Bar
|
||
|
|
||
|
// const attachment = new Discord.MessageAttachment(
|
||
|
// canvas.toBuffer(),
|
||
|
// AttachmentName
|
||
|
// );
|
||
|
// interaction.followUp({ files: [attachment] });
|
||
|
// },
|
||
|
// };
|