converted ShaiBot casino to Nut Economy
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
const ping = require("../../../src/ping")
|
||||
const ping = require("../../../utils/ping")
|
||||
|
||||
module.exports = {
|
||||
name: 'ping',
|
||||
|
||||
@@ -1,54 +1,158 @@
|
||||
const { EmbedBuilder } = require('discord.js')
|
||||
const { mClient } = require('../../../index')
|
||||
function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
|
||||
require('dotenv').config()
|
||||
const {
|
||||
EmbedBuilder
|
||||
} = require("discord.js");
|
||||
|
||||
const {
|
||||
getNutBalance
|
||||
} = require(
|
||||
"../../../utils/nutEconomy"
|
||||
);
|
||||
|
||||
|
||||
function delay(ms) {
|
||||
return new Promise(
|
||||
resolve =>
|
||||
setTimeout(
|
||||
resolve,
|
||||
ms
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'checknuts',
|
||||
description: 'get nuts',
|
||||
aliases: ['chn'],
|
||||
async execute(message, args) {
|
||||
var target = message.author
|
||||
var addressing = `Du hast`
|
||||
if (args[0]) {
|
||||
if (!args[0].startsWith('<@' || !args[0].endsWith('>'))) { return message.reply('Invalid User Specification') }
|
||||
try {
|
||||
target = await message.guild.members.fetch(args[0].slice(2, -1))
|
||||
} catch (error) {
|
||||
return message.reply({
|
||||
content: `User: ${args[0]} nicht gefunden!`
|
||||
}).then(async (msg) => {
|
||||
await delay(4000)
|
||||
message.delete()
|
||||
msg.delete()
|
||||
})
|
||||
name:
|
||||
"checknuts",
|
||||
|
||||
description:
|
||||
"get nuts",
|
||||
|
||||
aliases: [
|
||||
"chn"
|
||||
],
|
||||
|
||||
|
||||
async execute(
|
||||
message,
|
||||
args
|
||||
) {
|
||||
let target =
|
||||
message.author;
|
||||
|
||||
|
||||
let addressing =
|
||||
"Du hast";
|
||||
|
||||
|
||||
if (
|
||||
args[0]
|
||||
) {
|
||||
if (
|
||||
!args[0].startsWith("<@")
|
||||
||
|
||||
!args[0].endsWith(">")
|
||||
) {
|
||||
return message.reply(
|
||||
"Invalid User Specification"
|
||||
);
|
||||
}
|
||||
|
||||
if (target.user.id !== message.author.id) {
|
||||
if (!target.user.globalName) {
|
||||
addressing = `${target.user.username} hat`
|
||||
} else {
|
||||
addressing = `${target.user.globalName} hat`
|
||||
|
||||
try {
|
||||
target =
|
||||
await message.guild.members.fetch(
|
||||
args[0].slice(
|
||||
2,
|
||||
-1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (error) {
|
||||
return message.reply({
|
||||
content:
|
||||
`User: ${args[0]} nicht gefunden!`
|
||||
})
|
||||
.then(
|
||||
async msg => {
|
||||
await delay(
|
||||
4000
|
||||
);
|
||||
|
||||
|
||||
message.delete();
|
||||
msg.delete();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (
|
||||
target.user.id !==
|
||||
message.author.id
|
||||
) {
|
||||
if (
|
||||
!target.user.globalName
|
||||
) {
|
||||
addressing =
|
||||
`${target.user.username} hat`;
|
||||
}
|
||||
|
||||
|
||||
else {
|
||||
addressing =
|
||||
`${target.user.globalName} hat`;
|
||||
}
|
||||
}
|
||||
}
|
||||
const db = mClient.db(process.env.M_DB)
|
||||
const nutsColl = db.collection('items_nuts')
|
||||
var nutsData = await nutsColl.findOne({ userID: target.id })
|
||||
|
||||
let content
|
||||
if (!nutsData) {
|
||||
content = `${addressing} noch keine Nüsse gesammelt :(`
|
||||
} else {
|
||||
content = `${addressing} bereits **${nutsData.nuts}** Nüsse gesammelt!`
|
||||
|
||||
const targetId =
|
||||
target.id
|
||||
??
|
||||
target.user?.id;
|
||||
|
||||
|
||||
const balance =
|
||||
await getNutBalance(
|
||||
targetId
|
||||
);
|
||||
|
||||
|
||||
let content;
|
||||
|
||||
|
||||
if (
|
||||
balance <=
|
||||
0
|
||||
) {
|
||||
content =
|
||||
`${addressing} noch keine Nüsse gesammelt :(`;
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Checknuts!')
|
||||
.setThumbnail(target.displayAvatarURL())
|
||||
.setDescription(content)
|
||||
|
||||
else {
|
||||
content =
|
||||
`${addressing} bereits **${balance}** Nüsse gesammelt!`;
|
||||
}
|
||||
|
||||
|
||||
const embed =
|
||||
new EmbedBuilder()
|
||||
.setTitle(
|
||||
"Checknuts!"
|
||||
)
|
||||
.setThumbnail(
|
||||
target.displayAvatarURL()
|
||||
)
|
||||
.setDescription(
|
||||
content
|
||||
);
|
||||
|
||||
|
||||
return message.reply({
|
||||
embeds: [embed]
|
||||
})
|
||||
embeds: [
|
||||
embed
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1,31 +1,88 @@
|
||||
const { EmbedBuilder } = require('discord.js')
|
||||
const { mClient } = require('../../../index')
|
||||
require('dotenv').config()
|
||||
module.exports = {
|
||||
name: 'nutsCooldown',
|
||||
description: 'shows nut cooldown',
|
||||
aliases: ['ncd'],
|
||||
async execute(message, args) {
|
||||
const db = mClient.db(process.env.M_DB)
|
||||
const nutsColl = db.collection('items_cooldowns')
|
||||
const cooldown = await nutsColl.findOne({ userID: message.author.id })
|
||||
const {
|
||||
EmbedBuilder
|
||||
} = require("discord.js");
|
||||
|
||||
let content = `Du kannst wieder nussen! :)`
|
||||
let thumbnail = 'https://cdn-icons-png.flaticon.com/512/7451/7451659.png'
|
||||
let title = 'Go Nuts!'
|
||||
if (cooldown) {
|
||||
content = `<t:${cooldown.cooldown}:R> kannst du wieder nussen! ;)`
|
||||
thumbnail = 'https://cdn.discordapp.com/attachments/1152723542836772914/1152987472788193361/No-nuts-PhotoRoom.png-PhotoRoom.png'
|
||||
title = 'To Nut or Not to Nut...'
|
||||
const {
|
||||
getCooldown,
|
||||
getUnixTime
|
||||
} = require(
|
||||
"../../../utils/nutEconomy"
|
||||
);
|
||||
|
||||
|
||||
module.exports = {
|
||||
name:
|
||||
"nutsCooldown",
|
||||
|
||||
description:
|
||||
"shows nut cooldown",
|
||||
|
||||
aliases: [
|
||||
"ncd"
|
||||
],
|
||||
|
||||
|
||||
async execute(
|
||||
message,
|
||||
args
|
||||
) {
|
||||
const cooldown =
|
||||
await getCooldown(
|
||||
message.author.id,
|
||||
"nut"
|
||||
);
|
||||
|
||||
|
||||
const now =
|
||||
getUnixTime();
|
||||
|
||||
|
||||
let content =
|
||||
"Du kannst wieder nussen! :)";
|
||||
|
||||
|
||||
let thumbnail =
|
||||
"https://cdn-icons-png.flaticon.com/512/7451/7451659.png";
|
||||
|
||||
|
||||
let title =
|
||||
"Go Nuts!";
|
||||
|
||||
|
||||
if (
|
||||
cooldown >
|
||||
now
|
||||
) {
|
||||
content =
|
||||
`<t:${cooldown}:R> kannst du wieder nussen! ;)`;
|
||||
|
||||
|
||||
thumbnail =
|
||||
"https://cdn.discordapp.com/attachments/1152723542836772914/1152987472788193361/No-nuts-PhotoRoom.png-PhotoRoom.png";
|
||||
|
||||
|
||||
title =
|
||||
"To Nut or Not to Nut...";
|
||||
}
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setThumbnail(thumbnail)
|
||||
.setTitle(title)
|
||||
.setDescription(content)
|
||||
|
||||
const embed =
|
||||
new EmbedBuilder()
|
||||
.setThumbnail(
|
||||
thumbnail
|
||||
)
|
||||
.setTitle(
|
||||
title
|
||||
)
|
||||
.setDescription(
|
||||
content
|
||||
);
|
||||
|
||||
|
||||
await message.reply({
|
||||
embeds: [embed]
|
||||
})
|
||||
embeds: [
|
||||
embed
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
+123
-56
@@ -1,64 +1,131 @@
|
||||
const { mClient } = require('../../../index')
|
||||
require('dotenv').config()
|
||||
const {
|
||||
getCollections,
|
||||
changeNuts,
|
||||
claimCooldown,
|
||||
randomInteger
|
||||
} = require(
|
||||
"../../../utils/nutEconomy"
|
||||
);
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'nuts',
|
||||
description: 'get nuts',
|
||||
aliases: ['n', 'nget', 'nutsget'],
|
||||
async execute(message, args) {
|
||||
const db = mClient.db(process.env.M_DB)
|
||||
const nutsColl = db.collection('items_nuts')
|
||||
const nutsStatsColl = db.collection('stats_nuts')
|
||||
const cdColl = db.collection('items_cooldowns')
|
||||
const cdData = await cdColl.findOne({ userID: message.author.id })
|
||||
name:
|
||||
"nuts",
|
||||
|
||||
if (cdData?.cooldown > (Date.now() / 1000)) {
|
||||
return await message.reply({
|
||||
content: `Du kannst erst <t:${Math.floor(cdData?.cooldown)}:R> wieder nussen :(`,
|
||||
})
|
||||
}
|
||||
description:
|
||||
"get nuts",
|
||||
|
||||
let cd = Math.floor((Date.now() + 3600000) / 1000)
|
||||
await cdColl.findOneAndUpdate({
|
||||
userID: message.author.id
|
||||
}, {
|
||||
$set: {
|
||||
cooldown: cd,
|
||||
application: 'nuts'
|
||||
}
|
||||
}, {
|
||||
upsert: true
|
||||
})
|
||||
aliases: [
|
||||
"n",
|
||||
"nget",
|
||||
"nutsget"
|
||||
],
|
||||
|
||||
const amount = Math.floor(Math.random() * 10)
|
||||
|
||||
await nutsColl.findOneAndUpdate({
|
||||
userID: message.author.id
|
||||
}, {
|
||||
$inc: { nuts: amount }
|
||||
}, {
|
||||
upsert: true
|
||||
})
|
||||
async execute(
|
||||
message,
|
||||
args
|
||||
) {
|
||||
const {
|
||||
db
|
||||
} =
|
||||
getCollections();
|
||||
|
||||
await nutsStatsColl.findOneAndUpdate(
|
||||
{ userID: message.author.id },
|
||||
{ $inc: { [`stat.${amount}`]: 1 } },
|
||||
{ upsert: true }
|
||||
)
|
||||
|
||||
await nutsStatsColl.findOneAndUpdate(
|
||||
{ userID: "__global" },
|
||||
{ $inc: { [`stat.${amount}`]: 1 } },
|
||||
{ upsert: true }
|
||||
)
|
||||
// Helper for singular/plural
|
||||
const formatNut = (amount) => `${amount === 1 ? 'eine' : amount} ${amount === 1 ? 'Nuss' : 'Nüsse'}`
|
||||
const nutsStatsColl =
|
||||
db.collection(
|
||||
"stats_nuts"
|
||||
);
|
||||
|
||||
let nutText = `Du hast ${formatNut(amount)} bekommen! :chestnut:`
|
||||
if (amount <= 0) {
|
||||
nutText = `Du hast keine Nuss bekommen! :yoink_help:`
|
||||
}
|
||||
return await message.reply({
|
||||
content: nutText
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const cooldown =
|
||||
await claimCooldown(
|
||||
message.author.id,
|
||||
"nut",
|
||||
60 * 60
|
||||
);
|
||||
|
||||
|
||||
if (
|
||||
!cooldown.claimed
|
||||
) {
|
||||
return message.reply({
|
||||
content:
|
||||
`Du kannst erst <t:${cooldown.next}:R> wieder nussen :(`
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const amount =
|
||||
randomInteger(
|
||||
0,
|
||||
9
|
||||
);
|
||||
|
||||
|
||||
await changeNuts(
|
||||
message.author.id,
|
||||
amount
|
||||
);
|
||||
|
||||
|
||||
await nutsStatsColl.findOneAndUpdate(
|
||||
{
|
||||
userId:
|
||||
message.author.id
|
||||
},
|
||||
{
|
||||
$inc: {
|
||||
[`stat.${amount}`]:
|
||||
1
|
||||
}
|
||||
},
|
||||
{
|
||||
upsert:
|
||||
true
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
await nutsStatsColl.findOneAndUpdate(
|
||||
{
|
||||
userId:
|
||||
"__global"
|
||||
},
|
||||
{
|
||||
$inc: {
|
||||
[`stat.${amount}`]:
|
||||
1
|
||||
}
|
||||
},
|
||||
{
|
||||
upsert:
|
||||
true
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
const formatNut =
|
||||
amount =>
|
||||
`${amount === 1 ? "eine" : amount} ${amount === 1 ? "Nuss" : "Nüsse"}`;
|
||||
|
||||
|
||||
let nutText =
|
||||
`Du hast ${formatNut(amount)} bekommen! :chestnut:`;
|
||||
|
||||
|
||||
if (
|
||||
amount <=
|
||||
0
|
||||
) {
|
||||
nutText =
|
||||
"Du hast keine Nuss bekommen! :yoink_help:";
|
||||
}
|
||||
|
||||
|
||||
return message.reply({
|
||||
content:
|
||||
nutText
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,78 +1,224 @@
|
||||
const { EmbedBuilder } = require('discord.js')
|
||||
const { mClient } = require('../../../index')
|
||||
function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
|
||||
require('dotenv').config()
|
||||
const {
|
||||
EmbedBuilder
|
||||
} = require("discord.js");
|
||||
|
||||
const {
|
||||
getNutBalance,
|
||||
transferNuts
|
||||
} = require(
|
||||
"../../../utils/nutEconomy"
|
||||
);
|
||||
|
||||
|
||||
function delay(ms) {
|
||||
return new Promise(
|
||||
resolve =>
|
||||
setTimeout(
|
||||
resolve,
|
||||
ms
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'givenuts',
|
||||
description: 'give nuts',
|
||||
aliases: ['gn'],
|
||||
async execute(message, args) {
|
||||
const from = message.author
|
||||
if (args[0] == `<@${message.author.id}>` || !args[0]) {
|
||||
name:
|
||||
"givenuts",
|
||||
|
||||
description:
|
||||
"give nuts",
|
||||
|
||||
aliases: [
|
||||
"gn"
|
||||
],
|
||||
|
||||
|
||||
async execute(
|
||||
message,
|
||||
args
|
||||
) {
|
||||
const from =
|
||||
message.author;
|
||||
|
||||
|
||||
if (
|
||||
args[0] ==
|
||||
`<@${message.author.id}>`
|
||||
||
|
||||
!args[0]
|
||||
) {
|
||||
return message.reply({
|
||||
content: "Du musst einen anderen User erwähnen"
|
||||
}).then(async (msg) => {
|
||||
await delay(4000)
|
||||
message.delete()
|
||||
msg.delete()
|
||||
content:
|
||||
"Du musst einen anderen User erwähnen"
|
||||
})
|
||||
.then(
|
||||
async msg => {
|
||||
await delay(
|
||||
4000
|
||||
);
|
||||
|
||||
|
||||
message.delete();
|
||||
msg.delete();
|
||||
}
|
||||
);
|
||||
}
|
||||
if (!args[0].startsWith('<@' || !args[0].endsWith('>'))) { return message.reply('Invalid User Specification') }
|
||||
try {
|
||||
target = await message.guild.members.fetch(args[0].slice(2, -1))
|
||||
} catch (error) {
|
||||
return message.reply({
|
||||
content: `User: ${args[0]} nicht gefunden!`
|
||||
}).then(async (msg) => {
|
||||
await delay(4000)
|
||||
message.delete()
|
||||
msg.delete()
|
||||
})
|
||||
|
||||
|
||||
if (
|
||||
!args[0].startsWith("<@")
|
||||
||
|
||||
!args[0].endsWith(">")
|
||||
) {
|
||||
return message.reply(
|
||||
"Invalid User Specification"
|
||||
);
|
||||
}
|
||||
const to = target
|
||||
|
||||
|
||||
let target;
|
||||
|
||||
|
||||
try {
|
||||
var amount = Number(args[1])
|
||||
target =
|
||||
await message.guild.members.fetch(
|
||||
args[0].slice(
|
||||
2,
|
||||
-1
|
||||
)
|
||||
);
|
||||
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
return message.reply({
|
||||
content: 'Du musst eine Menge angeben!'
|
||||
}).then(async (msg) => {
|
||||
await delay(4000)
|
||||
message.delete()
|
||||
msg.delete()
|
||||
content:
|
||||
`User: ${args[0]} nicht gefunden!`
|
||||
})
|
||||
}
|
||||
if (!amount) {
|
||||
return message.reply({content : 'Danke für nichts, du Hu-'})
|
||||
.then(
|
||||
async msg => {
|
||||
await delay(
|
||||
4000
|
||||
);
|
||||
|
||||
|
||||
message.delete();
|
||||
msg.delete();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const db = mClient.db(process.env.M_DB)
|
||||
const nutsColl = db.collection('items_nuts')
|
||||
const yourBalance = await nutsColl.findOne({ userID: from.id })
|
||||
if (amount <= 0) {
|
||||
return await message.reply({
|
||||
content: `Hier wird nicht geklaut >:(\r\nDas gibt **${yourBalance.nuts}** Abzug!`
|
||||
})
|
||||
}
|
||||
if (yourBalance.nuts < amount) {
|
||||
return await message.reply({
|
||||
content: 'Du kannst nicht mehr geben als du hast!',
|
||||
ephemeral: true
|
||||
})
|
||||
}
|
||||
var content = `Du sendest **${amount}** Nüsse an <@${target.id}>`
|
||||
|
||||
if (amount == 1) {
|
||||
content = `Du sendest **eine** Nuss an <@${target.id}>`
|
||||
}
|
||||
await nutsColl.findOneAndUpdate({ userID: from.id }, { $inc: { nuts: -amount } }, { upsert: true })
|
||||
await nutsColl.findOneAndUpdate({ userID: to.id }, { $inc: { nuts: +amount } }, { upsert: true })
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Gib Nuss!')
|
||||
.setDescription(content)
|
||||
.setThumbnail(target.displayAvatarURL())
|
||||
return message.reply({ embeds: [embed] })
|
||||
const to =
|
||||
target;
|
||||
|
||||
|
||||
let amount;
|
||||
|
||||
|
||||
try {
|
||||
amount =
|
||||
Number(
|
||||
args[1]
|
||||
);
|
||||
|
||||
} catch (error) {
|
||||
console.log(
|
||||
error
|
||||
);
|
||||
|
||||
|
||||
return message.reply({
|
||||
content:
|
||||
"Du musst eine Menge angeben!"
|
||||
})
|
||||
.then(
|
||||
async msg => {
|
||||
await delay(
|
||||
4000
|
||||
);
|
||||
|
||||
|
||||
message.delete();
|
||||
msg.delete();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (
|
||||
!amount
|
||||
) {
|
||||
return message.reply({
|
||||
content:
|
||||
"Danke für nichts, du Hu-"
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const yourBalance =
|
||||
await getNutBalance(
|
||||
from.id
|
||||
);
|
||||
|
||||
|
||||
if (
|
||||
amount <=
|
||||
0
|
||||
) {
|
||||
return message.reply({
|
||||
content:
|
||||
`Hier wird nicht geklaut >:(\r\nDas gibt **${yourBalance}** Abzug!`
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if (
|
||||
yourBalance <
|
||||
amount
|
||||
) {
|
||||
return message.reply({
|
||||
content:
|
||||
"Du kannst nicht mehr geben als du hast!"
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
let content =
|
||||
`Du sendest **${amount}** Nüsse an <@${target.id}>`;
|
||||
|
||||
|
||||
if (
|
||||
amount ==
|
||||
1
|
||||
) {
|
||||
content =
|
||||
`Du sendest **eine** Nuss an <@${target.id}>`;
|
||||
}
|
||||
|
||||
|
||||
await transferNuts(
|
||||
from.id,
|
||||
to.id,
|
||||
amount
|
||||
);
|
||||
|
||||
|
||||
const embed =
|
||||
new EmbedBuilder()
|
||||
.setTitle(
|
||||
"Gib Nuss!"
|
||||
)
|
||||
.setDescription(
|
||||
content
|
||||
)
|
||||
.setThumbnail(
|
||||
target.displayAvatarURL()
|
||||
);
|
||||
|
||||
|
||||
return message.reply({
|
||||
embeds: [
|
||||
embed
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -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
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1,5 +1,5 @@
|
||||
const { SlashCommandBuilder } = require("discord.js");
|
||||
const ping = require("../../../src/ping");
|
||||
const ping = require("../../../utils/ping");
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
// commands/applications/nutHub.js
|
||||
|
||||
const {
|
||||
SlashCommandBuilder
|
||||
} = require("discord.js");
|
||||
|
||||
const {
|
||||
showNutHub
|
||||
} = require(
|
||||
"../../../utils/nutHub"
|
||||
);
|
||||
|
||||
|
||||
module.exports = {
|
||||
data:
|
||||
new SlashCommandBuilder()
|
||||
.setName(
|
||||
"nuthub"
|
||||
)
|
||||
.setDescription(
|
||||
"open the Nut Hub"
|
||||
),
|
||||
|
||||
|
||||
async execute(
|
||||
interaction
|
||||
) {
|
||||
return showNutHub(
|
||||
interaction
|
||||
);
|
||||
}
|
||||
};
|
||||
+1471
-411
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user