-
Notifications
You must be signed in to change notification settings - Fork 59
/
profile.js
91 lines (81 loc) · 3.34 KB
/
profile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
const Discord = require('discord.js')
const colors = require('../lib/colors.json')
const canvacord = require('canvacord')
exports.run = async (client, message, args, level) => { // eslint-disable-line no-unused-vars
const language = client.getSettings(message.guild.id).language
const lang = require("../lib/languages/" + language + ".json")
try {
function delay(delayInms) {
return new Promise(resolve => {
setTimeout(() => {
resolve(2)
}, delayInms)
})
}
const rankuser = guild.members.fetch().then(members => {
const online = members.filter((member) => !member.user?.bot && member.presence?.status != 'offline').map((member) => member);
})
client.points.ensure(`${message.guild.id}-${rankuser.id}`, {
user: rankuser.id,
guild: rankuser.id,
points: 0,
level: 1
})
const filtered = client.points.filter(p => p.guild === message.guild.id).array()
const sorted = filtered.sort((a, b) => b.points - a.points)
const top10 = sorted.splice(0, message.guild.memberCount)
let i = 0
for (const data of top10) {
await delay(15)
try {
i++
if (client.users.cache.get(data.user).tag === rankuser.tag) break
} catch {
i = lang.ErrorCountingRank
break
}
}
const key = `${message.guild.id}-${rankuser.id}`
let curpoints = Number(client.points.get(key, `points`).toFixed(2))
let curnextlevel = Number(((Number(1) + Number(client.points.get(key, `level`).toFixed(2))) * Number(10)) * ((Number(1) + Number(client.points.get(key, `level`).toFixed(2))) * Number(10)))
if (client.points.get(key, `level`) === undefined) i = lang.NoRank
let status = rankuser.presence.status !== null ? rankuser.presence.status : "offline"
const rank = new canvacord.Rank()
.setAvatar(rankuser.displayAvatarURL({
dynamic: false,
format: 'png'
}))
.setCurrentXP(Number(curpoints.toFixed(2)), colors.default)
.setRequiredXP(Number(curnextlevel.toFixed(2)), colors.default)
.setStatus(status, false, 7)
.renderEmojis(true)
.setProgressBar(colors.default, "COLOR")
.setRankColor(colors.default, "COLOR")
.setLevelColor(colors.default, "COLOR")
.setUsername(rankuser.username, colors.default)
.setRank(Number(i), "Rank", true)
.setLevel(Number(client.points.get(key, `level`)), lang.Level, true)
.setDiscriminator(rankuser.discriminator, colors.default)
rank.build()
.then(async data => {
const attachment = new Discord.MessageAttachment(data, "RankCard.png")
message.channel.send(attachment)
return
})
} catch (err) {
const errors = require('../modules/errors.js')
errors.embedError(err, lang, message)
}
}
exports.conf = {
enabled: true,
aliases: ['p'],
guildOnly: false,
permLevel: 'member'
}
exports.help = {
name: 'profile',
category: 'Economy',
description: 'Shows yours or [member]\'s profile.',
usage: 'profile [member]'
}