Files
amayo/src/commands/messages/game/deathlog.ts

50 lines
1.5 KiB
TypeScript

import type { CommandMessage } from "../../../core/types/commands";
import type Amayo from "../../../core/client";
import { prisma } from "../../../core/database/prisma";
export const command: CommandMessage = {
name: "deathlog",
aliases: ["muertes"],
type: "message",
cooldown: 8,
category: "Economía",
description: "Muestra tus últimas muertes y penalizaciones aplicadas.",
usage: "deathlog [cantidad<=20]",
run: async (message, args, _client: Amayo) => {
const userId = message.author.id;
const guildId = message.guild!.id;
let take = 10;
if (args[0]) {
const n = parseInt(args[0], 10);
if (!isNaN(n) && n > 0) take = Math.min(20, n);
}
const logs = await prisma.deathLog.findMany({
where: { userId, guildId },
orderBy: { createdAt: "desc" },
take,
});
if (!logs.length) {
await message.reply("No hay registros de muerte.");
return;
}
const lines = logs.map((l) => {
const pct = Math.round((l.percentApplied || 0) * 100);
const parts: string[] = [];
parts.push(`💰-${l.goldLost}`);
if (pct) parts.push(`${pct}%`);
if (l.fatigueMagnitude)
parts.push(`Fatiga ${Math.round(l.fatigueMagnitude * 100)}%`);
const area = l.areaKey ? l.areaKey : "?";
return `${l.createdAt.toISOString().slice(11, 19)} | ${area} L${
l.level ?? "-"
} | ${parts.join(" | ")}${l.autoDefeatNoWeapon ? " | sin arma" : ""}`;
});
await message.reply(
`**DeathLog (últimos ${logs.length})**\n${lines.join("\n")}`
);
},
};