Finished generate_report

This commit is contained in:
2025-07-23 20:00:39 +03:00
parent 09abd6c116
commit 28253e423c
4 changed files with 28 additions and 13 deletions

View File

@@ -32,12 +32,13 @@
"Failed to download the background image! Aborting." RESPONSE_NO_CHARGE "Failed to download the background image! Aborting." RESPONSE_NO_CHARGE
#define COMMAND_GENERATE_REPORT_FAIL_IMAGE_LOAD \ #define COMMAND_GENERATE_REPORT_FAIL_IMAGE_LOAD \
"Failed to load the background image! Aborting." RESPONSE_NO_CHARGE "Failed to load the background image! Aborting." RESPONSE_NO_CHARGE
#define COMMAND_GENERATE_REPORT_FAIL_INSUFFICIENT_BALANCE(amount) \
"You do not have " + amount + " " CURRENCY_NAME "(s) to afford this."
#define COMMAND_GENERATE_REPORT_CONFIRMATION_QUESTION(price, imageURL, \ #define COMMAND_GENERATE_REPORT_CONFIRMATION_QUESTION(price, imageURL, \
imageMIME, headline) \ imageMIME, headline) \
"This image generation will cost you " + price + \ "This image generation will cost you " + price + \
" " CURRENCY_NAME \ " " CURRENCY_NAME \
"(s).\nAre you sure you want to continue?\nHeadline: " + \ "(s). Are you sure you want to continue?\nHeadline: " + \
headline + "\n[" + imageMIME + "](" + imageURL + ")" headline + "\n[" + imageMIME + "](" + imageURL + ")"
// Command get_pfp // Command get_pfp

View File

@@ -1,5 +1,6 @@
#include "../Common.hpp" #include "../Common.hpp"
#include "../Utility/CairoTools.hpp" #include "../Utility/CairoTools.hpp"
#include "TransactionMethods.hpp"
#include <dpp/dispatcher.h> #include <dpp/dispatcher.h>
#include <dpp/dpp.h> #include <dpp/dpp.h>
@@ -11,6 +12,16 @@
void commandGenerateReport(const dpp::slashcommand_t &event, void commandGenerateReport(const dpp::slashcommand_t &event,
dpp::cluster &bot) { dpp::cluster &bot) {
event.thinking(); event.thinking();
auto issuer = event.command.get_issuing_user().id;
// Insufficient balance
if (!checkFromUsersBalance(issuer, COMMAND_GENERATE_REPORT_COST)) {
event.edit_response(COMMAND_GENERATE_REPORT_FAIL_INSUFFICIENT_BALANCE(
std::to_string(COMMAND_GENERATE_REPORT_COST)));
return;
}
deductFromUsersBalance(issuer, COMMAND_GENERATE_REPORT_COST);
// Start processing
dpp::snowflake fileId = dpp::snowflake fileId =
std::get<dpp::snowflake>(event.get_parameter("image")); std::get<dpp::snowflake>(event.get_parameter("image"));
dpp::attachment file = event.command.get_resolved_attachment(fileId); dpp::attachment file = event.command.get_resolved_attachment(fileId);

View File

@@ -34,12 +34,13 @@ void commandPay(const dpp::slashcommand_t &event, dpp::cluster &bot) {
std::get<dpp::snowflake>(event.get_parameter("recipient")).str(); std::get<dpp::snowflake>(event.get_parameter("recipient")).str();
std::uint64_t amount = std::get<std::int64_t>(event.get_parameter("amount")); std::uint64_t amount = std::get<std::int64_t>(event.get_parameter("amount"));
// See if we can deduct the payment first // Insufficient balance
if (!deductFromUsersBalance(event.command.get_issuing_user().id, amount)) { if (!checkFromUsersBalance(ADMIN_ID, amount)) {
event.reply(COMMAND_PAY_FAIL_INSUFFICIENT_AMOUNT(recipient, event.reply(COMMAND_PAY_FAIL_INSUFFICIENT_AMOUNT(recipient,
std::to_string(amount))); std::to_string(amount)));
return; return;
} }
deductFromUsersBalance(ADMIN_ID, amount);
// Lets pay them // Lets pay them
increaseFromUsersBalance(recipient, amount); increaseFromUsersBalance(recipient, amount);
@@ -68,12 +69,13 @@ void commandBurnMoney(const dpp::slashcommand_t &event, dpp::cluster &bot) {
} }
std::uint64_t amount = std::get<std::int64_t>(event.get_parameter("amount")); std::uint64_t amount = std::get<std::int64_t>(event.get_parameter("amount"));
// Insufficient in balance // Insufficient balance
if (!deductFromUsersBalance(ADMIN_ID, amount)) { if (!checkFromUsersBalance(ADMIN_ID, amount)) {
event.reply(COMMAND_BURN_FAIL_INSUFFICIENT_AMOUNT(std::to_string(amount))); event.reply(COMMAND_BURN_FAIL_INSUFFICIENT_AMOUNT(std::to_string(amount)));
return; return;
} }
deductFromUsersBalance(ADMIN_ID, amount);
event.reply( event.reply(
COMMAND_BURN_SUCCESS(std::to_string(ADMIN_ID), std::to_string(amount))); COMMAND_BURN_SUCCESS(std::to_string(ADMIN_ID), std::to_string(amount)));
} }
@@ -122,16 +124,15 @@ void increaseFromUsersBalance(const dpp::snowflake userid,
" WHERE UID=" + userid.str()); " WHERE UID=" + userid.str());
} }
bool deductFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount) { void deductFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount) {
std::uint64_t balance = std::stoll(getUserBalance(userid)); std::uint64_t balance = std::stoll(getUserBalance(userid));
if (balance < amount) {
return false;
}
execSQL("UPDATE MONEY SET CASH=" + std::to_string(balance - amount) + execSQL("UPDATE MONEY SET CASH=" + std::to_string(balance - amount) +
" WHERE UID=" + userid.str()); " WHERE UID=" + userid.str());
}
return true; bool checkFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount) {
std::uint64_t balance = std::stoll(getUserBalance(userid));
return balance >= amount;
} }
std::string getUserBalance(const dpp::snowflake userid) { std::string getUserBalance(const dpp::snowflake userid) {

View File

@@ -3,6 +3,8 @@
// Helper methods // Helper methods
void increaseFromUsersBalance(const dpp::snowflake userid, void increaseFromUsersBalance(const dpp::snowflake userid,
std::uint64_t amount); std::uint64_t amount);
bool deductFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount); void deductFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount);
bool checkFromUsersBalance(const dpp::snowflake userid, std::uint64_t amount);
std::string getUserBalance(const dpp::snowflake userid); std::string getUserBalance(const dpp::snowflake userid);
void addUserToDatabase(const dpp::snowflake userid); void addUserToDatabase(const dpp::snowflake userid);