Compare commits

..

3 Commits

Author SHA1 Message Date
cat
6d5177629a Renamed it from cash to money, also fixed balance issue 2025-07-19 03:18:09 +03:00
cat
1284fde1ee Added printing money, will rename 2025-07-19 03:10:27 +03:00
cat
1421d794a4 Added ability to see others balance 2025-07-19 02:53:54 +03:00
4 changed files with 71 additions and 12 deletions

View File

@@ -1,8 +1,13 @@
#include "../token.h"
#define CURRENCY_NAME "Night Coin" #define CURRENCY_NAME "Night Coin"
#define COMMAND_BALANCE_DESCRIPTION "See your balance of " CURRENCY_NAME #define COMMAND_BALANCE_DESCRIPTION "See someone's balance of " CURRENCY_NAME
#define COMMAND_BALANCE_RESPONSE(balance) \ #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)" "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_DESCRIPTION "Send someone some amount of " CURRENCY_NAME "s"
#define COMMAND_PAY_ARGS_USER_DESCRIPTION "Who do you want to pay" #define COMMAND_PAY_ARGS_USER_DESCRIPTION "Who do you want to pay"
@@ -12,3 +17,11 @@
" " CURRENCY_NAME "(s)!" " " CURRENCY_NAME "(s)!"
#define COMMAND_PAY_SUCCESS(recipient, amount) \ #define COMMAND_PAY_SUCCESS(recipient, amount) \
"Successfully sent <@!" + recipient + "> " + amount + " " CURRENCY_NAME "(s)!" "Successfully sent <@!" + recipient + "> " + amount + " " CURRENCY_NAME "(s)!"
#define COMMAND_PRINT_DESCRIPTION "Allows the admin to print money on-demand"
#define COMMAND_PRINT_ARGS_AMOUNT_DESCRIPTION "How much are we printing boss?"
#define COMMAND_PRINT_FAIL_NO_PRIVILIEGE \
"Only <@!" + std::to_string(ADMIN_ID) + "> can print money!"
#define COMMAND_PRINT_SUCCESS(amount) \
"Successfully printed " + amount + " " CURRENCY_NAME "(s) to <@!" + \
std::to_string(ADMIN_ID) + "> !"

View File

@@ -1,14 +1,28 @@
#include "Base/SQL.hpp" #include "Base/SQL.hpp"
#include "Commands.hpp" #include "Commands.hpp"
#include <cstdint> #include <cstdint>
#include <dpp/appcommand.h>
#include <dpp/dispatcher.h> #include <dpp/dispatcher.h>
#include <dpp/exception.h>
#include <dpp/snowflake.h> #include <dpp/snowflake.h>
#include <string> #include <string>
#include <variant>
void commandPing(const dpp::slashcommand_t &event) { event.reply("Pong"); } void commandPing(const dpp::slashcommand_t &event) { event.reply("Pong"); }
void commandBalance(const dpp::slashcommand_t &event) { void commandBalance(const dpp::slashcommand_t &event) {
std::string balance = getUserBalance(event.command.get_issuing_user().id); std::string person, balance;
event.reply(COMMAND_BALANCE_RESPONSE(balance)); dpp::command_value id = event.get_parameter("user");
// Weirdest thing ever
if (std::holds_alternative<std::monostate>(id)) {
balance = getUserBalance(event.command.get_issuing_user().id);
event.reply(COMMAND_BALANCE_SELF_RESPONSE(balance));
return;
}
person = std::get<dpp::snowflake>(id).str();
balance = getUserBalance(person);
event.reply(COMMAND_BALANCE_SOMEONE_ELSE_RESPONSE(person, balance));
} }
void commandPay(const dpp::slashcommand_t &event) { void commandPay(const dpp::slashcommand_t &event) {
@@ -28,6 +42,22 @@ void commandPay(const dpp::slashcommand_t &event) {
event.reply(COMMAND_PAY_SUCCESS(recipient, std::to_string(amount))); event.reply(COMMAND_PAY_SUCCESS(recipient, std::to_string(amount)));
} }
void commandPrintMoney(const dpp::slashcommand_t &event) {
std::int64_t userid = event.command.get_issuing_user().id;
if (ADMIN_ID != userid) {
event.reply(COMMAND_PRINT_FAIL_NO_PRIVILIEGE);
return;
}
std::uint64_t amount = std::get<std::int64_t>(event.get_parameter("amount"));
increaseFromUsersBalance(ADMIN_ID, amount);
event.reply(COMMAND_PRINT_SUCCESS(std::to_string(amount)));
}
///
/// HELPER INLINE METHODS
///
inline void increaseFromUsersBalance(const dpp::snowflake userid, inline void increaseFromUsersBalance(const dpp::snowflake userid,
std::uint64_t amount) { std::uint64_t amount) {
std::uint64_t balance = std::stoi(getUserBalance(userid)); std::uint64_t balance = std::stoi(getUserBalance(userid));

View File

@@ -7,10 +7,18 @@ void createCommands(const dpp::ready_t &event, dpp::cluster &bot) {
// Money related stuff // Money related stuff
bot.guild_command_create( 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); GUILD);
bot.guild_command_create( 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( bot.guild_command_create(
dpp::slashcommand("pay", COMMAND_PAY_DESCRIPTION, bot.me.id) dpp::slashcommand("pay", COMMAND_PAY_DESCRIPTION, bot.me.id)
.add_option(dpp::command_option( .add_option(dpp::command_option(
@@ -21,4 +29,12 @@ void createCommands(const dpp::ready_t &event, dpp::cluster &bot) {
COMMAND_PAY_ARGS_AMOUNT_DESCRIPTION, true) COMMAND_PAY_ARGS_AMOUNT_DESCRIPTION, true)
.set_min_value(1)), .set_min_value(1)),
GUILD); GUILD);
bot.guild_command_create(
dpp::slashcommand("print_money", COMMAND_PRINT_DESCRIPTION, bot.me.id)
.add_option(dpp::command_option(
dpp::command_option_type::co_integer, "amount",
COMMAND_PRINT_ARGS_AMOUNT_DESCRIPTION, true)
.set_min_value(1)),
GUILD);
} }

View File

@@ -8,6 +8,7 @@ void createCommands(const dpp::ready_t &event, dpp::cluster &bot);
void commandPing(const dpp::slashcommand_t &event); void commandPing(const dpp::slashcommand_t &event);
void commandBalance(const dpp::slashcommand_t &event); void commandBalance(const dpp::slashcommand_t &event);
void commandPay(const dpp::slashcommand_t &event); void commandPay(const dpp::slashcommand_t &event);
void commandPrintMoney(const dpp::slashcommand_t &event);
// Inline helpers // Inline helpers
inline void increaseFromUsersBalance(const dpp::snowflake userid, inline void increaseFromUsersBalance(const dpp::snowflake userid,
@@ -21,9 +22,8 @@ inline void addUserToDatabase(const dpp::snowflake userid);
inline std::unordered_map<std::string, inline std::unordered_map<std::string,
std::function<void(const dpp::slashcommand_t &event)>> std::function<void(const dpp::slashcommand_t &event)>>
Commands{ Commands{{"ping", commandPing},
{"ping", commandPing},
{"balance", commandBalance}, {"balance", commandBalance},
{"bal", commandBalance}, {"bal", commandBalance},
{"pay", commandPay}, {"pay", commandPay},
}; {"print_money", commandPrintMoney}};