Skip to content

Commit

Permalink
Update leaderboard function for more flexibility
Browse files Browse the repository at this point in the history
  • Loading branch information
baka-aho committed Nov 3, 2023
1 parent fa37bce commit 05921de
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 75 deletions.
155 changes: 84 additions & 71 deletions src/functions/database/globalUserLeaderBoard.js
Original file line number Diff line number Diff line change
@@ -1,80 +1,93 @@
module.exports = async (d) => {
const data = d.util.aoiFunc(d);
if (data.err) return d.error(data.err);

const [
variable,
type = "asc",
custom = `{top}. {username}: {value:,}`,
list = 10,
page = 1,
table = d.client.db.tables[0],
] = data.inside.splits;

if (!d.client.variableManager.has(variable, table)) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" Not Found`);

let db = await d.client.db.all(table, variable.addBrackets(), 1);
db.sort((a, b) => a.value - b.value);

if (type === "desc") db = db.reverse();

let y = 0;
let value;
let content = [];
db = db.slice(page * list - list, page * list);

for (const Data of db) {
let user;
value = Number(Data.value);
user = await d.util.getUser(d, Data.key.split("_")[1]);

if (user) {
y++;
let text = custom
.replaceAll(`{top}`, y)
.replaceAll("{id}", user.id)
.replaceAll("{tag}", user.tag)
.replaceAll(`{username}`, user.username.removeBrackets())
.replaceAll(`{value}`, value);

if (text.includes("{value:")) {
let sep = text.split("{value:")[1].split("}")[0];
text = text.replaceAll(`{value:${sep}}`, value.toLocaleString().replaceAll(",", sep));
}
const data = d.util.aoiFunc(d);
if (data.err) return d.error(data.err);
let c = Date.now()
const [
variable,
type = "asc",
custom = `{top}. {username}: {value:,}`,
list = 10,
page = 1,
table = d.client.db.tables[0],
hideNegativeValue = false,
hideZeroValue = false
] = data.inside.splits;

if (!d.client.variableManager.has(variable, table)) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" Not Found`);

let v = d.client.variableManager.get(variable, table)

if (v.type !== 'INTEGER') {
if (isNaN(Number(v.default ? v.default : 'null'))) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" is not a numbered variable`);
}

let db = await d.client.db.all(table, variable.addBrackets(), 1);
db.sort((a, b) => a.value - b.value);

if (type === "desc") db = db.reverse();

if (hideNegativeValue === "true") db = db.filter(x => x.value >= 0);
if (hideZeroValue === "true") db = db.filter(x => x.value != 0);

if (text.includes("{execute:")) {
let ins = text.split("{execute:")[1].split("}")[0];
const awaited = d.client.cmd.awaited.find((c) => c.name === ins);
let y = 0;
let value;
let content = [];

if (!awaited)
return d.aoiError.fnError(
d,
"custom",
{ inside: data.inside },
` Invalid awaited command '${ins}' in`,
db = db.slice(page * list - list, page * list);

for (const Data of db) {
let user;
value = Number(Data.value);
user = await d.util.getUser(d, Data.key.split("_")[1]);

if (user) {
y++;
let text = custom
.replaceAll(`{top}`, y)
.replaceAll("{id}", user.id)
.replaceAll("{tag}", user.tag)
.replaceAll(`{username}`, user.username.removeBrackets())
.replaceAll(`{value}`, value);

if (text.includes("{value:")) {
let sep = text.split("{value:")[1].split("}")[0];
text = text.replaceAll(`{value:${sep}}`, value.toLocaleString().replaceAll(",", sep));
}

if (text.includes("{execute:")) {
let ins = text.split("{execute:")[1].split("}")[0];
const awaited = d.client.cmd.awaited.find((c) => c.name === ins);

if (!awaited)
return d.aoiError.fnError(
d,
"custom",
{ inside: data.inside },
` Invalid awaited command '${ins}' in`,
);

const CODE = await d.interpreter(
d.client,
{
guild: d.message.guild,
channel: d.message.channel,
author: user,
},
d.args,
awaited,
undefined,
true,
);
text = text.replaceAll(`{execute:${ins}}`, CODE);
}

const CODE = await d.interpreter(
d.client,
{
guild: d.message.guild,
channel: d.message.channel,
author: user,
},
d.args,
awaited,
undefined,
true,
);
text = text.replaceAll(`{execute:${ins}}`, CODE);
content.push(text);
}
content.push(text);
}
}

data.result = content.join("\n");
data.result = content.join("\n");

return {
code: d.util.setCode(data),
};
};
return {
code: d.util.setCode(data),
};
};
10 changes: 10 additions & 0 deletions src/functions/database/guildLeaderBoard.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,25 @@ module.exports = async (d) => {
list = 10,
page = 1,
table = d.client.db.tables[0],
hideNegativeValue = false,
hideZeroValue = false
] = data.inside.splits;

if (!d.client.variableManager.has(variable, table)) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" Not Found`);
let v = d.client.variableManager.get(variable, table)

if (v.type !== 'INTEGER') {
if (isNaN(Number(v.default ? v.default : 'null'))) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" is not a numbered variable`);
}

let db = await d.client.db.all(table, variable.addBrackets(), 1);
db.sort((a, b) => a.value - b.value);

if (type === "desc") db = db.reverse();

if (hideNegativeValue === "true") db = db.filter(x => x.value >= 0);
if (hideZeroValue === "true") db = db.filter(x => x.value != 0);

let y = 0;
let value;
let content = [];
Expand Down
19 changes: 15 additions & 4 deletions src/functions/database/userLeaderBoard.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,27 @@ module.exports = async d => {
list = 10,
page = 1,
table = d.client.db.tables[0],
hideNegativeValue = false,
hideZeroValue = false
] = data.inside.splits;

let db = await d.client.db.all(table, variable.addBrackets(), 2, [1, guildID]);
db.sort((a, b) => a.value - b.value);
if (type === "desc") db = db.reverse();

const guild = await d.util.getGuild(d, guildID);
if (!guild) return d.aoiError.fnError(d, "guild", { inside: data.inside });

if (!d.client.variableManager.has(variable, table)) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" Not Found`);
let v = d.client.variableManager.get(variable, table)

if (v.type !== 'INTEGER') {
if (isNaN(Number(v.default ? v.default : 'null'))) return d.aoiError.fnError(d, 'custom', {}, `Variable "${variable}" is not a numbered variable`);
}

let db = await d.client.db.all(table, variable.addBrackets(), 2, [1, guildID]);
db.sort((a, b) => a.value - b.value);

if (type === "desc") db = db.reverse();

if (hideNegativeValue === "true") db = db.filter(x => x.value >= 0);
if (hideZeroValue === "true") db = db.filter(x => x.value != 0);

let y = 0;
let value;
Expand Down

0 comments on commit 05921de

Please sign in to comment.