Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const stripIndents = require('common-tags').stripIndents;
- const fs = require('fs');
- const moment = require("moment");
- const util = require('util');
- const beautify = require('js-beautify').js_beautify;
- const rp = require('request-promise-native');
- const request = require("request");
- const canvas = require("canvas");
- const Image = new canvas.Image();
- const streamToArray = require('stream-to-array');
- canvas.fromBuffer = buffer => {
- let img = new canvas.Image(), c;
- img.src = buffer;
- c = new canvas(img.width, img.height);
- try{
- c.getContext('2d').drawImage(img, 0, 0);
- return c;
- }catch(e){
- console.log(e);
- return "Error loading image.";
- }
- };
- canvas.fromFile = src => new Promise(resolve => fs.readFile(src, (err, data) => resolve(canvas.fromBuffer(data))));
- canvas.fromURL = url => streamToArray(request(url)).then(buffers => Buffer.concat(buffers)).then(canvas.fromBuffer);
- const showProfile = (client, user) => new Promise(async (resolve, reject) => {
- const url = user.avatarURL;
- const clientUser = client.scores.get(user.id);
- const currentLevel = Math.floor(0.2 * Math.sqrt(clientUser.points));
- const previousLevel = Math.floor(Math.pow(currentLevel/0.2, 2));
- const nextLevel = Math.floor(Math.pow((currentLevel + 1)/0.2, 2));
- const Prog = Math.round(((clientUser.points-previousLevel)/(nextLevel-previousLevel))*228);
- let red = parseInt(clientUser.color.substring(0,2), 16);
- let green = parseInt(clientUser.color.substring(2,4), 16);
- let blue = parseInt(clientUser.color.substring(4,6), 16);
- return streamToArray(request(url)).then(buffers => Buffer.concat(buffers)).then(async buffer => {
- const Image = canvas.Image;
- let img = new Image(), c;
- c = new canvas(370, 281);
- ctx = c.getContext("2d");
- ctx.save();
- ctx.fillStyle = `rgba(${red} , ${green}, ${blue}, 1)`;
- ctx.fillRect(90, 46, 275, 4);
- const NunitoSansExtraLight = new canvas.Font('NunitoSansExtraLight', './assets/NunitoSans-ExtraLight.ttf');
- const FiraSans = new canvas.Font('FiraSans', './assets/FiraSans-Regular.ttf');
- const sortedList = client.scores.array().sort(function (a, b) {return b.points - a.points});
- try{
- return canvas.fromFile('profile.png').then(cv => {cv.src = cv.toBuffer(); ctx.drawImage(cv, 0, 0, 370, 281)}).then(async () => {
- try {
- ctx.antialias = 'subpixel';
- ctx.scale(1, 1);
- ctx.fillStyle = `rgba(${red} , ${green}, ${blue}, 1)`;
- ctx.fillRect(116, 71, Prog, 20);
- ctx.save();
- ctx.beginPath();
- ctx.arc(49, 54, 45, 0, Math.PI * 2, false);
- ctx.clip();
- img.onload = function () {
- ctx.drawImage(img, 5, 9, 90, 90);
- }
- img.src = buffer;
- ctx.restore();
- ctx.font = '25px NunitoSansExtraLight';
- ctx.fillStyle = "rgb(230,230,230)";
- ctx.fillText(user.username, 106, 38);
- ctx.fillStyle = "rgb(23,23,23)";
- ctx.textAlign="right";
- ctx.font = '18px FiraSans';
- ctx.fillText(clientUser.points, 340, 156);
- ctx.fillText(parseInt(sortedList.map(l => l.ID).indexOf(user.id)) + 1, 340, 179);
- ctx.fillText(clientUser.money, 340, 202);
- ctx.font = '30px FiraSans';
- ctx.textAlign="center";
- ctx.fillText(currentLevel, 70, 186);
- ctx.restore();
- resolve(c);
- } catch (e) {
- reject(`Woops! Something happened:\n\`\`\`${e}\`\`\``)
- }
- });
- } catch(e) {
- reject(`Woops! Something happened:\n\`\`\`${e}\`\`\``)
- }
- });
- });
- exports.run = async (client, msg, [qs]) => {
- let query = client.funcs.searchUser(qs, msg.guild);
- if (!query) return msg.channel.send(`User not found: \`${qs}\``);
- const user = query.user;
- showProfile(client, user).then(cv => msg.channel.sendFile(cv.toBuffer()));
- };
- exports.conf = {
- enabled: true,
- guildOnly: true,
- aliases: [],
- permLevel: 10,
- botPerms: [],
- requiredFuncs: [],
- };
- exports.help = {
- name: "kyrazen",
- description: "",
- usage: "<user:string>",
- usageDelim: ""
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement