added bankruptcy

This commit is contained in:
DeSqBlocki
2026-08-23 00:09:13 +02:00
parent 030b4b8883
commit 9c867b1adb
12 changed files with 985 additions and 676 deletions
+64
View File
@@ -0,0 +1,64 @@
const {
SlashCommandBuilder,
EmbedBuilder,
MessageFlags
} = require("discord.js");
const {
declareBankruptcy
} = require("../../utils/bankruptcy");
module.exports = {
data: new SlashCommandBuilder()
.setName("bankruptcy")
.setDescription(
"Declare bankruptcy at exactly 0 Cookies and receive a starter kit."
),
async execute(interaction) {
const result = await declareBankruptcy(interaction);
if (!result.ok) {
if (result.reason === "COOLDOWN") {
return interaction.reply({
content:
`Bankruptcy assistance is unavailable until <t:${result.nextAvailableAt}:R>.`,
flags: MessageFlags.Ephemeral
});
}
if (result.reason === "BALANCE_NOT_ZERO") {
return interaction.reply({
content:
`You may only declare bankruptcy at exactly **0 Cookies**. Your current balance is **${result.balance.toLocaleString()}**.`,
flags: MessageFlags.Ephemeral
});
}
return interaction.reply({
content: "Bankruptcy could not be declared.",
flags: MessageFlags.Ephemeral
});
}
const embed = new EmbedBuilder()
.setTitle("🍪 Bankruptcy Declared")
.setDescription(
[
`${interaction.user} has been issued a fresh starter kit.`,
"",
`**+${result.amount.toLocaleString()} Cookies**`,
"",
"The Cookie economy believes in second chances."
].join("\n")
)
.addFields({
name: "Next Eligibility",
value: `<t:${result.nextAvailableAt}:R>`
});
return interaction.reply({
embeds: [embed]
});
}
};
+34 -51
View File
@@ -1,63 +1,46 @@
const {
SlashCommandBuilder
} = require(
"discord.js"
);
const { SlashCommandBuilder } = require("discord.js");
const {
buildProfileOverview,
buildProfileButtons
} = require(
"../../utils/profileSystem"
);
} = require("../../utils/profileSystem");
const {
createInteractionSession
} = require("../../utils/interactionSession");
module.exports = {
data:
new SlashCommandBuilder()
.setName(
"profile"
)
.setDescription(
"View a player profile"
)
.addUserOption(
option =>
option
.setName(
"user"
)
.setDescription(
"Player to view"
)
),
data: new SlashCommandBuilder()
.setName("profile")
.setDescription("View a player profile")
.addUserOption(option =>
option
.setName("user")
.setDescription("Player to view")
),
async execute(
interaction
) {
const user =
interaction.options.getUser(
"user"
) ??
interaction.user;
async execute(interaction) {
const user = interaction.options.getUser("user") ?? interaction.user;
const sessionOwnerId =
interaction.user.id;
const embed = await buildProfileOverview(
interaction.guildId,
user,
interaction.user.id
);
const embed =
await buildProfileOverview(
interaction.guildId,
user,
sessionOwnerId
);
return interaction.reply({
await interaction.reply({
embeds: [embed],
components:
buildProfileButtons(
"overview",
0,
1
)
components: buildProfileButtons()
});
const message = await interaction.fetchReply();
await createInteractionSession(
interaction,
{
messageId: message.id,
ownerId: interaction.user.id,
kind: "profile",
targetId: user.id
}
);
}
};