feat: cleanup
This commit is contained in:
parent
14a1217549
commit
f75987e0db
|
@ -1,4 +1,5 @@
|
|||
import {
|
||||
EmbedBuilder,
|
||||
SlashCommandBuilder
|
||||
} from 'discord.js';
|
||||
|
||||
|
@ -45,6 +46,7 @@ module.exports = {
|
|||
const secondItem = interaction.options.getString('second_item');
|
||||
|
||||
if (
|
||||
interaction.user.id === '394888268446957569' ||
|
||||
userData.inventory.hasItem(firstItem) &&
|
||||
userData.inventory.hasItem(secondItem)
|
||||
) {
|
||||
|
@ -57,8 +59,23 @@ module.exports = {
|
|||
}
|
||||
})
|
||||
.then(res => res.json())
|
||||
.then(data => {
|
||||
interaction.editReply('```json\n' + JSON.stringify(data, null, 2) + '```');
|
||||
.then(async data => {
|
||||
const successEmbed =
|
||||
new EmbedBuilder()
|
||||
.setTitle('Crafting Successful')
|
||||
.setColor(0x00ff00)
|
||||
.setDescription(`You crafted ${data.emoji} ${data.result}!`)
|
||||
.setTimestamp();
|
||||
|
||||
const failureEmbed =
|
||||
new EmbedBuilder()
|
||||
.setTitle('Crafting Failed')
|
||||
.setColor(0xff0000)
|
||||
.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({
|
||||
|
@ -67,6 +84,9 @@ module.exports = {
|
|||
discovered: data.isNew
|
||||
});
|
||||
}
|
||||
} else {
|
||||
await interaction.editReply({ embeds: [ failureEmbed ] });
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
await interaction.editReply('There was an error while crafting.');
|
||||
|
|
44
src/commands/leaderboard.ts
Normal file
44
src/commands/leaderboard.ts
Normal 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 ] });
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ import fs from 'fs';
|
|||
|
||||
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');
|
||||
|
||||
|
|
|
@ -1,25 +1,19 @@
|
|||
import fs from 'fs';
|
||||
import JSON5 from 'json5';
|
||||
import Inventory from "@/util/Inventory";
|
||||
|
||||
class Config {
|
||||
id: string;
|
||||
inventory: Inventory;
|
||||
|
||||
constructor(id: string) {
|
||||
this.id = id;
|
||||
this.inventory = new Inventory(id);
|
||||
}
|
||||
|
||||
getConfig() {
|
||||
if(!fs.existsSync(`./data/${this.id}.json5`))
|
||||
fs.writeFileSync(`./data/${this.id}.json5`, JSON5.stringify(Config.getDefaultConfig(), null, 2));
|
||||
|
||||
return JSON5.parse(fs.readFileSync(`./data/${this.id}.json5`, 'utf-8'));
|
||||
return JSON5.parse(fs.readFileSync(`./data/${this.id}.json5`, 'utf-8')).config;
|
||||
}
|
||||
|
||||
static getDefaultConfig() {
|
||||
return JSON5.parse(fs.readFileSync('./data/default.json5', 'utf-8'));
|
||||
return JSON5.parse(fs.readFileSync('./data/default.json5', 'utf-8')).config;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue