converted ShaiBot casino to Nut Economy

This commit is contained in:
2026-08-19 14:10:38 +02:00
parent a126de21d4
commit 1957991182
55 changed files with 8905 additions and 751 deletions
+159 -46
View File
@@ -1,49 +1,162 @@
const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js')
const { mClient } = require('../../../index')
function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
require('dotenv').config()
const {
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
ButtonStyle
} = require("discord.js");
const {
getCollections
} = require(
"../../../utils/nutEconomy"
);
module.exports = {
name: 'nutsleaderboard',
description: 'show nuts leaderboard',
aliases: ['nl', 'tn', 'topnuts'],
async execute(message, args) {
const row = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setLabel('◄')
.setStyle(ButtonStyle.Primary)
.setCustomId('nuts_leaderboard_left')
)
.addComponents(
new ButtonBuilder()
.setLabel('🧑')
.setStyle(ButtonStyle.Primary)
.setCustomId('nuts_leaderboard_self')
)
.addComponents(
new ButtonBuilder()
.setLabel('►')
.setStyle(ButtonStyle.Primary)
.setCustomId('nuts_leaderboard_right')
)
const db = mClient.db(process.env.M_DB)
const nutsColl = db.collection('items_nuts')
let skip = 0
const nutsData = await nutsColl.find({ nuts: { $gt: 0 } }).sort({ nuts: -1 }).skip(skip).limit(5).toArray()
let fields
let placements = skip + 1
nutsData.forEach((data) => {
fields = (fields ? fields : '') + (`${placements}. <@${data.userID}> : ${data.nuts} Nuts\r\n`)
})
const embed = new EmbedBuilder()
.setTitle('Nuts Leaderboard')
.setThumbnail(message.guild.iconURL({ dynamic: true}))
.setDescription(fields.toString())
.setColor('#5865F2') // Discord's blurple color
.setFooter({ text: 'Use ◄ ► to navigate' });
name:
"nutsleaderboard",
description:
"show nuts leaderboard",
aliases: [
"nl",
"tn",
"topnuts"
],
async execute(
message,
args
) {
const row =
new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setLabel(
"◄"
)
.setStyle(
ButtonStyle.Primary
)
.setCustomId(
"nuts_leaderboard_left"
),
new ButtonBuilder()
.setLabel(
"🧑"
)
.setStyle(
ButtonStyle.Primary
)
.setCustomId(
"nuts_leaderboard_self"
),
new ButtonBuilder()
.setLabel(
"►"
)
.setStyle(
ButtonStyle.Primary
)
.setCustomId(
"nuts_leaderboard_right"
)
);
const {
nuts
} =
getCollections();
const skip =
0;
const nutsData =
await nuts
.find({
nuts: {
$gt:
0
}
})
.sort({
nuts:
-1
})
.skip(
skip
)
.limit(
5
)
.toArray();
let fields;
let placements =
skip +
1;
nutsData.forEach(
data => {
fields =
(
fields
?
fields
:
""
)
+
`${placements}. <@${data.userId}> : ${data.nuts} Nuts\r\n`;
placements++;
}
);
const embed =
new EmbedBuilder()
.setTitle(
"Nuts Leaderboard"
)
.setThumbnail(
message.guild.iconURL({
dynamic:
true
})
)
.setDescription(
fields.toString()
)
.setColor(
"#5865F2"
)
.setFooter({
text:
"Use ◄ ► to navigate"
});
await message.reply({
embeds: [embed],
components: [row]
})
embeds: [
embed
],
components: [
row
]
});
}
}
};