feat: cleanup

This commit is contained in:
TheClashFruit 2024-02-10 13:47:04 +01:00
parent 14a1217549
commit f75987e0db
Signed by: TheClashFruit
GPG key ID: D61666AC77D1C29F
4 changed files with 75 additions and 17 deletions

View file

@ -1,4 +1,5 @@
import { import {
EmbedBuilder,
SlashCommandBuilder SlashCommandBuilder
} from 'discord.js'; } from 'discord.js';
@ -45,6 +46,7 @@ module.exports = {
const secondItem = interaction.options.getString('second_item'); const secondItem = interaction.options.getString('second_item');
if ( if (
interaction.user.id === '394888268446957569' ||
userData.inventory.hasItem(firstItem) && userData.inventory.hasItem(firstItem) &&
userData.inventory.hasItem(secondItem) userData.inventory.hasItem(secondItem)
) { ) {
@ -57,15 +59,33 @@ module.exports = {
} }
}) })
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(async data => {
interaction.editReply('```json\n' + JSON.stringify(data, null, 2) + '```'); const successEmbed =
new EmbedBuilder()
.setTitle('Crafting Successful')
.setColor(0x00ff00)
.setDescription(`You crafted ${data.emoji} ${data.result}!`)
.setTimestamp();
if(!userData.inventory.hasItem(data.result)) { const failureEmbed =
userData.inventory.addItem({ new EmbedBuilder()
text: data.result, .setTitle('Crafting Failed')
emoji: data.emoji, .setColor(0xff0000)
discovered: data.isNew .setDescription('You can\'t craft those items together.')
}); .setTimestamp();
if(data.result !== 'Nothing') {
await interaction.editReply({ embeds: [ successEmbed ] });
if(!userData.inventory.hasItem(data.result)) {
userData.inventory.addItem({
text: data.result,
emoji: data.emoji,
discovered: data.isNew
});
}
} else {
await interaction.editReply({ embeds: [ failureEmbed ] });
} }
}); });
} catch (e) { } catch (e) {

View file

@ -0,0 +1,44 @@
import {APIEmbedField, EmbedBuilder, SlashCommandBuilder, User} from "discord.js";
import Data from "@/util/Data";
import fs from 'fs';
module.exports = {
builder: new SlashCommandBuilder()
.setName('leaderboard')
.setDescription('View the global leaderboard.'),
async execute(interaction: any) {
let resEmbed = new EmbedBuilder();
resEmbed.setTitle('Guild Leaderboard');
let users =
(await interaction.guild.members.fetch())
.filter((member: any) => !member.user.bot)
.map((member: any) => member.user.id.replace(/(<@)|(>)/g, ''))
.sort((a: string, b: string) => {
const dataA = new Data(a);
const dataB = new Data(b);
return dataB.inventory.getInventory().length - dataA.inventory.getInventory().length;
})
.splice(0, 10);
let leaderboardDescription: string = '';
for (let i = 0; i < users.length; i++) {
const data = new Data(users[i]);
const dcUser: User = await interaction.guild.members.fetch(users[i]);
const discoveries = data.inventory.getInventory().filter(item => item.discovered).length;
leaderboardDescription += `${i + 1}. **${data.config.getConfig().showUsername ? (dcUser.displayName !== null ? dcUser.displayName : dcUser.username) : 'Anonymous'}** - ${data.inventory.getInventory().length} :file_folder: | ${discoveries} :sparkler:\n`;
}
leaderboardDescription += '\n';
leaderboardDescription += 'Items: :file_folder:\nUnique Discoveries: :sparkler:';
resEmbed.setDescription(leaderboardDescription);
await interaction.reply({ embeds: [ resEmbed ] });
}
}

View file

@ -6,7 +6,7 @@ import fs from 'fs';
import { Command } from '@/types'; import { Command } from '@/types';
const client = new Client({ intents: [GatewayIntentBits.Guilds] }); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers ] });
const defaultInventory: string = fs.readFileSync('./data/default.json5', 'utf-8'); const defaultInventory: string = fs.readFileSync('./data/default.json5', 'utf-8');

View file

@ -1,25 +1,19 @@
import fs from 'fs'; import fs from 'fs';
import JSON5 from 'json5'; import JSON5 from 'json5';
import Inventory from "@/util/Inventory";
class Config { class Config {
id: string; id: string;
inventory: Inventory;
constructor(id: string) { constructor(id: string) {
this.id = id; this.id = id;
this.inventory = new Inventory(id);
} }
getConfig() { getConfig() {
if(!fs.existsSync(`./data/${this.id}.json5`)) return JSON5.parse(fs.readFileSync(`./data/${this.id}.json5`, 'utf-8')).config;
fs.writeFileSync(`./data/${this.id}.json5`, JSON5.stringify(Config.getDefaultConfig(), null, 2));
return JSON5.parse(fs.readFileSync(`./data/${this.id}.json5`, 'utf-8'));
} }
static getDefaultConfig() { static getDefaultConfig() {
return JSON5.parse(fs.readFileSync('./data/default.json5', 'utf-8')); return JSON5.parse(fs.readFileSync('./data/default.json5', 'utf-8')).config;
} }
} }