Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { Client, GatewayIntentBits } = require('discord.js');
- const { createCanvas, loadImage } = require('canvas');
- const fs = require('node:fs');
- const path = require('node:path');
- const getProfile = require('../managers/getProfile');
- async function _img(_p, _url) {
- const { badges, user, user_profile } = _p;
- const _usr = user_profile?.pronouns || '';
- const _nam = user.global_name || user.username || '';
- const _trim = (t, m = 13) => t.length <= m ? t : t.slice(0, m - 3) + '...';
- const _bdgUrls = badges.map(b => `images/${b.id}.png`);
- const _bdgImgs = await Promise.all(_bdgUrls.map(u => loadImage(u).catch(() => null)));
- const _bg = await loadImage('images/prof_arqet.png');
- const _can = createCanvas(_bg.width, _bg.height);
- const hydra_canvas = _can.getContext('2d');
- hydra_canvas.drawImage(_bg, 0, 0);
- const _s = 21, _g = 2.3, _y = 98, _m = 10;
- const _sh = _bdgImgs.slice(0, _m);
- let _x = (_can.width - (_s + _g) * _sh.length + _g) / 2;
- _sh.forEach(_i => {
- if (!_i) return;
- hydra_canvas.drawImage(_i, _x, _y - _s / 2, _s, _s);
- _x += _s + _g;
- });
- if (badges.length > _m) {
- hydra_canvas.font = '13px Arial';
- hydra_canvas.fillStyle = 'white';
- hydra_canvas.fillText(`+ ${badges.length - _m} more`, _x, _y + 5);
- }
- hydra_canvas.font = '14px "Noto Sans", "Segoe UI Emoji"';
- hydra_canvas.fillStyle = 'white';
- hydra_canvas.textAlign = 'center';
- hydra_canvas.textBaseline = 'middle';
- hydra_canvas.fillText(_trim(_usr), 90, 150);
- hydra_canvas.fillText(_nam, 300, 60);
- hydra_canvas.font = '15px "Noto Sans", "Segoe UI Emoji"';
- hydra_canvas.textAlign = 'left';
- hydra_canvas.textBaseline = 'top';
- hydra_canvas.fillText(user.bio || _p.bio || '...', 310, 160);
- const _aX = 47, _aY = 40, _aS = 90;
- hydra_canvas.save();
- hydra_canvas.beginPath();
- hydra_canvas.arc(_aX + _aS / 2, _aY + _aS / 2, _aS / 2, 0, Math.PI * 2);
- hydra_canvas.clip();
- const _aU = user.avatar ? `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png` : 'https://cdn.discordapp.com/embed/avatars/0.png';
- const _aImg = await loadImage(_aU);
- hydra_canvas.drawImage(_aImg, _aX, _aY, _aS, _aS);
- hydra_canvas.restore();
- if (user.avatar_decoration_data?.asset) {
- const _d = await loadImage(`https://cdn.discordapp.com/avatar-decoration-presets/${user.avatar_decoration_data.asset}.png?size=4096`);
- hydra_canvas.drawImage(_d, _aX - 10, _aY - 10, _aS + 20, _aS + 20);
- }
- if (!user_profile?.pronouns && user?.clan?.badge) {
- const _bU = `https://cdn.discordapp.com/clan-badges/${user.clan.identity_guild_id}/${user.clan.badge}.png?size=4096`;
- const _b = await loadImage(_bU).catch(() => null);
- if (_b) {
- const _tag = user.clan.tag || user.username;
- hydra_canvas.drawImage(_b, 65, 140, 21, 21);
- hydra_canvas.font = '14px "Noto Sans"';
- hydra_canvas.textAlign = 'left';
- hydra_canvas.textBaseline = 'middle';
- hydra_canvas.fillStyle = 'white';
- hydra_canvas.fillText(_tag, 115, 150);
- }
- }
- return _can.toBuffer();
- }
- hydra.on('guildMemberAdd', async _mem => {
- try {
- const _ch = _mem.guild.channels.cache.get('1378625211091386459');
- if (!_ch) return console.error('Room not found');
- const _p = await getProfile(_mem.id);
- if (!_p) return _ch.send('❌ Failed to fetch profile.');
- const _url = `https://cdn.discordapp.com/avatars/${_mem.id}/${_mem.avatar}.png`;
- const _imgBuf = await _img(_p, _url);
- await _ch.send({ files: [{ attachment: _imgBuf, name: 'profile-image.png' }] });
- } catch (e) {
- console.error(e);
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement