42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { EmbedBuilder, type Message } from "discord.js";
|
|
import type { Command } from "../service";
|
|
import { api } from "../../../util";
|
|
|
|
const ATTRIBUTE_EMOJI: Record<string, string> = {
|
|
Strength: "💪",
|
|
Power: "⚡",
|
|
Endurance: "🏃",
|
|
Agility: "🤸",
|
|
};
|
|
|
|
export default {
|
|
name: "stats",
|
|
description: "View your fitness statistics!",
|
|
execute: async (message: Message) => {
|
|
const res = await api.accounts({ id: `@${message.author.id}` }).stats.get();
|
|
if (!res.data) {
|
|
await message.reply("No stats found yet — submit an assessment first!");
|
|
return;
|
|
}
|
|
|
|
const { player, attributes } = res.data;
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setColor(0xE74C3C)
|
|
.setTitle(`${message.author.username}'s Stats`)
|
|
.setThumbnail(message.author.displayAvatarURL())
|
|
.setDescription(`**Overall Level: ${player}**`)
|
|
.addFields(
|
|
Object.entries(attributes).map(([attribute, level]) => ({
|
|
name: `${ATTRIBUTE_EMOJI[attribute] ?? ""} ${attribute}`,
|
|
value: `Level ${level}`,
|
|
inline: true,
|
|
}))
|
|
)
|
|
.setFooter({ text: "Blade & Brawn" })
|
|
.setTimestamp();
|
|
|
|
await message.reply({ embeds: [embed] });
|
|
}
|
|
} as Command;
|