From 1421d794a4b888b2959ba9790bada081354f31c4 Mon Sep 17 00:00:00 2001 From: cat Date: Sat, 19 Jul 2025 02:53:54 +0300 Subject: [PATCH] Added ability to see others balance --- languages/locale_en.hpp | 8 ++++++-- src/CommandEvents.cpp | 20 ++++++++++++++++++-- src/CommandManagement.cpp | 12 ++++++++++-- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/languages/locale_en.hpp b/languages/locale_en.hpp index c2f6763..5f51ae3 100644 --- a/languages/locale_en.hpp +++ b/languages/locale_en.hpp @@ -1,8 +1,12 @@ #define CURRENCY_NAME "Night Coin" -#define COMMAND_BALANCE_DESCRIPTION "See your balance of " CURRENCY_NAME -#define COMMAND_BALANCE_RESPONSE(balance) \ +#define COMMAND_BALANCE_DESCRIPTION "See someone's balance of " CURRENCY_NAME +#define COMMAND_BALANCE_USER_DESCRIPTION \ + "Leave this blank if you want to see your own balance" +#define COMMAND_BALANCE_SELF_RESPONSE(balance) \ "You currently have " + balance + " " CURRENCY_NAME "(s)" +#define COMMAND_BALANCE_SOMEONE_ELSE_RESPONSE(person, balance) \ + "<@!" + person + "> currently has " + balance + " " CURRENCY_NAME "(s)" #define COMMAND_PAY_DESCRIPTION "Send someone some amount of " CURRENCY_NAME "s" #define COMMAND_PAY_ARGS_USER_DESCRIPTION "Who do you want to pay" diff --git a/src/CommandEvents.cpp b/src/CommandEvents.cpp index 09cce5a..f323892 100644 --- a/src/CommandEvents.cpp +++ b/src/CommandEvents.cpp @@ -1,14 +1,30 @@ #include "Base/SQL.hpp" #include "Commands.hpp" #include +#include #include +#include #include #include +#include void commandPing(const dpp::slashcommand_t &event) { event.reply("Pong"); } void commandBalance(const dpp::slashcommand_t &event) { - std::string balance = getUserBalance(event.command.get_issuing_user().id); - event.reply(COMMAND_BALANCE_RESPONSE(balance)); + std::string person, balance; + dpp::command_value id = event.get_parameter("user"); + + // Weirdest thing ever + if (std::holds_alternative(id)) { + person = event.command.get_issuing_user().id; + balance = getUserBalance(person); + event.reply(COMMAND_BALANCE_SELF_RESPONSE(balance)); + + return; + } + + person = std::get(id).str(); + balance = getUserBalance(person); + event.reply(COMMAND_BALANCE_SOMEONE_ELSE_RESPONSE(person, balance)); } void commandPay(const dpp::slashcommand_t &event) { diff --git a/src/CommandManagement.cpp b/src/CommandManagement.cpp index 34716f2..ca4c661 100644 --- a/src/CommandManagement.cpp +++ b/src/CommandManagement.cpp @@ -7,10 +7,18 @@ void createCommands(const dpp::ready_t &event, dpp::cluster &bot) { // Money related stuff bot.guild_command_create( - dpp::slashcommand("balance", COMMAND_BALANCE_DESCRIPTION, bot.me.id), + dpp::slashcommand("balance", COMMAND_BALANCE_DESCRIPTION, bot.me.id) + .add_option(dpp::command_option(dpp::command_option_type::co_user, + "user", + COMMAND_BALANCE_USER_DESCRIPTION)), GUILD); bot.guild_command_create( - dpp::slashcommand("bal", COMMAND_BALANCE_DESCRIPTION, bot.me.id), GUILD); + dpp::slashcommand("bal", COMMAND_BALANCE_DESCRIPTION, bot.me.id) + .add_option(dpp::command_option(dpp::command_option_type::co_user, + "user", + COMMAND_BALANCE_USER_DESCRIPTION)), + GUILD); + bot.guild_command_create( dpp::slashcommand("pay", COMMAND_PAY_DESCRIPTION, bot.me.id) .add_option(dpp::command_option(