224 lines
4.9 KiB
JavaScript
224 lines
4.9 KiB
JavaScript
const {
|
|
EmbedBuilder,
|
|
ActionRowBuilder,
|
|
ButtonBuilder,
|
|
ButtonStyle
|
|
} = require("discord.js");
|
|
|
|
const {
|
|
getCookieBalance,
|
|
temporaryEphemeralReply
|
|
} = require(
|
|
"../../utils/cookieEconomy"
|
|
);
|
|
|
|
|
|
module.exports = {
|
|
name:
|
|
"crumbSaucerHeist",
|
|
|
|
|
|
async execute(interaction) {
|
|
const footer =
|
|
interaction.message
|
|
.embeds[0]
|
|
?.footer
|
|
?.text;
|
|
|
|
|
|
const [
|
|
type,
|
|
ownerId
|
|
] =
|
|
footer
|
|
?.split(":")
|
|
??
|
|
[];
|
|
|
|
|
|
if (
|
|
type !==
|
|
"crumbSaucer" ||
|
|
ownerId !==
|
|
interaction.user.id
|
|
) {
|
|
return temporaryEphemeralReply(
|
|
interaction,
|
|
{
|
|
content:
|
|
"This isn't your Crumb Saucer session."
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
const vaultId =
|
|
interaction.client.user.id;
|
|
|
|
|
|
const [
|
|
vault,
|
|
player
|
|
] =
|
|
await Promise.all([
|
|
getCookieBalance(
|
|
vaultId
|
|
),
|
|
|
|
getCookieBalance(
|
|
interaction.user.id
|
|
)
|
|
]);
|
|
|
|
|
|
if (
|
|
player < 1
|
|
) {
|
|
return temporaryEphemeralReply(
|
|
interaction,
|
|
{
|
|
content:
|
|
"You need at least **1 Cookie** before attempting a vault heist."
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
if (
|
|
vault < 1
|
|
) {
|
|
return temporaryEphemeralReply(
|
|
interaction,
|
|
{
|
|
content:
|
|
"The ShaiBot Vault is currently empty."
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
const embed =
|
|
new EmbedBuilder()
|
|
.setTitle(
|
|
"🏦 ShaiBot Cookie Vault"
|
|
)
|
|
.setDescription(
|
|
[
|
|
`**Vault Balance:** ${vault.toLocaleString()} 🍪`,
|
|
`**Security:** ${getSecurityLabel(vault)}`,
|
|
"",
|
|
"Choose your approach.",
|
|
"",
|
|
"🥷 **Sneak**",
|
|
"High chance • Small haul • Small fine",
|
|
"",
|
|
"💻 **Hack**",
|
|
"Medium chance • Medium haul • Medium fine",
|
|
"",
|
|
"💥 **Smash**",
|
|
"Low chance • Large haul • Large fine"
|
|
].join("\n")
|
|
)
|
|
.setFooter({
|
|
text:
|
|
`cookieHeist:${interaction.user.id}`
|
|
});
|
|
|
|
|
|
const heistButtons =
|
|
new ActionRowBuilder()
|
|
.addComponents(
|
|
new ButtonBuilder()
|
|
.setCustomId(
|
|
"cookieHeistSneak"
|
|
)
|
|
.setLabel(
|
|
"Sneak"
|
|
)
|
|
.setEmoji(
|
|
"🥷"
|
|
)
|
|
.setStyle(
|
|
ButtonStyle.Primary
|
|
),
|
|
|
|
new ButtonBuilder()
|
|
.setCustomId(
|
|
"cookieHeistHack"
|
|
)
|
|
.setLabel(
|
|
"Hack"
|
|
)
|
|
.setEmoji(
|
|
"💻"
|
|
)
|
|
.setStyle(
|
|
ButtonStyle.Secondary
|
|
),
|
|
|
|
new ButtonBuilder()
|
|
.setCustomId(
|
|
"cookieHeistSmash"
|
|
)
|
|
.setLabel(
|
|
"Smash"
|
|
)
|
|
.setEmoji(
|
|
"💥"
|
|
)
|
|
.setStyle(
|
|
ButtonStyle.Danger
|
|
)
|
|
);
|
|
|
|
|
|
return interaction.update({
|
|
embeds: [
|
|
embed
|
|
],
|
|
|
|
components: [
|
|
heistButtons
|
|
]
|
|
});
|
|
}
|
|
};
|
|
|
|
|
|
function getSecurityLabel(
|
|
vault
|
|
) {
|
|
if (
|
|
vault <
|
|
1000
|
|
) {
|
|
return "🟢 Low";
|
|
}
|
|
|
|
|
|
if (
|
|
vault <
|
|
10000
|
|
) {
|
|
return "🟡 Moderate";
|
|
}
|
|
|
|
|
|
if (
|
|
vault <
|
|
50000
|
|
) {
|
|
return "🟠 High";
|
|
}
|
|
|
|
|
|
if (
|
|
vault <
|
|
250000
|
|
) {
|
|
return "🔴 Very High";
|
|
}
|
|
|
|
|
|
return "🟣 Maximum";
|
|
} |