feat: cleanup
This commit is contained in:
parent
14a1217549
commit
f75987e0db
|
@ -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) {
|
||||||
|
|
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';
|
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');
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue