From a73e25a8b06c20e2512175f156f7951fb23859f6 Mon Sep 17 00:00:00 2001 From: cat Date: Sat, 19 Jul 2025 03:38:07 +0300 Subject: [PATCH] Added ability to burn money --- languages/locale_en.hpp | 11 +++++++++++ src/CommandEvents.cpp | 20 +++++++++++++++++++- src/CommandManagement.cpp | 8 ++++++++ src/Commands.hpp | 4 +++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/languages/locale_en.hpp b/languages/locale_en.hpp index 3d0a5a9..97487eb 100644 --- a/languages/locale_en.hpp +++ b/languages/locale_en.hpp @@ -24,3 +24,14 @@ #define COMMAND_PRINT_SUCCESS(recipient, amount) \ "Successfully printed " + amount + " " CURRENCY_NAME "(s) to <@!" + \ recipient + "> !" + +#define COMMAND_BURN_DESCRIPTION \ + "Allows the admin to burn money, burn baby burn!" +#define COMMAND_BURN_ARGS_AMOUNT_DESCRIPTION "How much are we burning?" +#define COMMAND_BURN_FAIL_NO_PRIVILIEGE(recipient) \ + "Only <@!" + recipient + "> can burn money!" +#define COMMAND_BURN_FAIL_INSUFFICIENT_AMOUNT(amount) \ + "You do not have" + amount + " " CURRENCY_NAME "(s) to burn!" +#define COMMAND_BURN_SUCCESS(recipient, amount) \ + "Successfully burned " + amount + " " CURRENCY_NAME "(s) to <@!" + \ + recipient + "> !" diff --git a/src/CommandEvents.cpp b/src/CommandEvents.cpp index 74549bf..cf65595 100644 --- a/src/CommandEvents.cpp +++ b/src/CommandEvents.cpp @@ -55,10 +55,28 @@ void commandPrintMoney(const dpp::slashcommand_t &event) { COMMAND_PRINT_SUCCESS(std::to_string(ADMIN_ID), std::to_string(amount))); } +void commandBurnMoney(const dpp::slashcommand_t &event) { + std::int64_t userid = event.command.get_issuing_user().id; + + if (ADMIN_ID != userid) { + event.reply(COMMAND_BURN_FAIL_NO_PRIVILIEGE(std::to_string(ADMIN_ID))); + return; + } + std::uint64_t amount = std::get(event.get_parameter("amount")); + + // Insufficient in balance + if (!deductFromUsersBalance(ADMIN_ID, amount)) { + event.reply(COMMAND_BURN_FAIL_INSUFFICIENT_AMOUNT(std::to_string(amount))); + return; + } + + event.reply( + COMMAND_BURN_SUCCESS(std::to_string(ADMIN_ID), std::to_string(amount))); +} + /// /// HELPER INLINE METHODS /// - inline void increaseFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount) { std::uint64_t balance = std::stoi(getUserBalance(userid)); diff --git a/src/CommandManagement.cpp b/src/CommandManagement.cpp index b4df7a3..1ada7c9 100644 --- a/src/CommandManagement.cpp +++ b/src/CommandManagement.cpp @@ -37,4 +37,12 @@ void createCommands(const dpp::ready_t &event, dpp::cluster &bot) { COMMAND_PRINT_ARGS_AMOUNT_DESCRIPTION, true) .set_min_value(1)), GUILD); + + bot.guild_command_create( + dpp::slashcommand("burn_money", COMMAND_BURN_DESCRIPTION, bot.me.id) + .add_option(dpp::command_option( + dpp::command_option_type::co_integer, "amount", + COMMAND_BURN_ARGS_AMOUNT_DESCRIPTION, true) + .set_min_value(1)), + GUILD); } diff --git a/src/Commands.hpp b/src/Commands.hpp index cd56b7a..d12eddc 100644 --- a/src/Commands.hpp +++ b/src/Commands.hpp @@ -9,6 +9,7 @@ void commandPing(const dpp::slashcommand_t &event); void commandBalance(const dpp::slashcommand_t &event); void commandPay(const dpp::slashcommand_t &event); void commandPrintMoney(const dpp::slashcommand_t &event); +void commandBurnMoney(const dpp::slashcommand_t &event); // Inline helpers inline void increaseFromUsersBalance(const dpp::snowflake userid, @@ -26,4 +27,5 @@ inline std::unordered_map