feat: inventory improvements

This commit is contained in:
TheClashFruit 2024-02-09 22:32:05 +01:00
parent d4c13b93d6
commit 2cb17adb32
Signed by: TheClashFruit
GPG key ID: D61666AC77D1C29F

View file

@ -24,6 +24,7 @@ module.exports = {
option option
.setName('page') .setName('page')
.setDescription('The page of the inventory to view.') .setDescription('The page of the inventory to view.')
.setMinValue(1)
.setRequired(false) .setRequired(false)
), ),
async execute(interaction: any) { async execute(interaction: any) {
@ -33,48 +34,82 @@ module.exports = {
const page = interaction.options.getInteger('page') || 1; const page = interaction.options.getInteger('page') || 1;
if(page <= 0 || Math.ceil(inv.length / 20) < page) {
await interaction.reply('That page does not exist.');
return;
}
if(interaction.options.getUser('user')) { if(interaction.options.getUser('user')) {
const user = interaction.options.getUser('user').id; const user = interaction.options.getUser('user').id;
const userInv: Inventory[] = new InventoryUtil(user).getInventory(); const userInv: Inventory[] = new InventoryUtil(user).getInventory();
resEmbed.setColor(interaction.options.getUser('user').accentColor | Math.floor(Math.random() * inv.length)); resEmbed.setColor(interaction.options.getUser('user').accentColor | 0x5865F2);
resEmbed.setTitle(`${interaction.options.getUser('user').displayName}'${interaction.options.getUser('user').displayName.endsWith('s') ? '' : 's'} Inventory`); resEmbed.setTitle(`${interaction.options.getUser('user').displayName}'${interaction.options.getUser('user').displayName.endsWith('s') ? '' : 's'} Inventory`);
let items = ""; let items = "";
userInv.slice(Math.floor((page - 1) * 25), Math.floor((page - 1) * 25) + 25).forEach(item => { userInv.slice(Math.floor((page - 1) * 20), Math.floor((page - 1) * 20) + 20).forEach(item => {
items += `* ${item.emoji} ${item.text} ${item.discovered ? '(New Discovery)' : ''}\n`; items += `* ${item.emoji} ${item.text} ${item.discovered ? '(🎇)' : ''}\n`;
}); });
resEmbed!.setDescription( let fields = [];
items
); fields.push({
name: ' ',
value: items.split('\n').slice(0, 10).join('\n'),
inline: true
});
if (items.split('\n').slice(10).length > 0) {
fields.push({
name: ' ',
value: items.split('\n').slice(10).join('\n'),
inline: true
});
}
resEmbed.addFields(fields);
resEmbed!.setFooter({ resEmbed!.setFooter({
text: `Page ${page} of ${Math.ceil(userInv.length / 25)} (${userInv.length} items)` text: `Page ${page} of ${Math.ceil(userInv.length / 20)} (${userInv.length} items)`
}); });
await interaction.reply({ embeds: [resEmbed] }); await interaction.reply({ embeds: [resEmbed] });
return; return;
} }
resEmbed.setColor(interaction.user.accentColor | Math.floor(Math.random() * inv.length)); resEmbed.setColor(interaction.user.accentColor | 0x5865F2);
resEmbed.setTitle('My Inventory'); resEmbed.setTitle('My Inventory');
let items = ""; let items = "";
inv.slice(Math.floor((page - 1) * 25), Math.floor((page - 1) * 25) + 25).forEach(item => { inv.slice(Math.floor((page - 1) * 20), Math.floor((page - 1) * 20) + 20).forEach(item => {
items += `* ${item.emoji} ${item.text} ${item.discovered ? '(**New Discovery**)' : ''}\n`; items += `* ${item.emoji} ${item.text} ${item.discovered ? '(🎇)' : ''}\n`;
}); });
resEmbed!.setFooter({ resEmbed!.setFooter({
text: `Page ${page} of ${Math.ceil(inv.length / 25)} (${inv.length} items)` text: `Page ${page} of ${Math.ceil(inv.length / 20)} (${inv.length} items)`
}); });
resEmbed!.setDescription( let fields = [];
items
); fields.push({
name: ' ',
value: items.split('\n').slice(0, 10).join('\n'),
inline: true
});
if (items.split('\n').slice(10).length > 0) {
fields.push({
name: ' ',
value: items.split('\n').slice(10).join('\n'),
inline: true
});
}
resEmbed.addFields(fields);
await interaction.reply({ embeds: [resEmbed] }); await interaction.reply({ embeds: [resEmbed] });
}, },