From d1793df1eda463b10107d41785ad1d7f055ed476 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 18 May 2024 14:48:12 +0500 Subject: upd: moved the bot part to a relative subfolder --- src/commands/command.cpp | 104 ----------------------------------------------- 1 file changed, 104 deletions(-) delete mode 100644 src/commands/command.cpp (limited to 'src/commands/command.cpp') diff --git a/src/commands/command.cpp b/src/commands/command.cpp deleted file mode 100644 index e3b45b1..0000000 --- a/src/commands/command.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "command.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include "../bundle.hpp" -#include "../modules/custom_command.hpp" -#include "../modules/event.hpp" -#include "../modules/help.hpp" -#include "../modules/join.hpp" -#include "../modules/massping.hpp" -#include "../modules/notify.hpp" -#include "../modules/ping.hpp" -#include "../modules/timer.hpp" -#include "../utils/chrono.hpp" -#include "request.hpp" - -namespace bot { - namespace command { - CommandLoader::CommandLoader() { - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - this->add_command(std::make_unique()); - } - - void CommandLoader::add_command(std::unique_ptr command) { - this->commands.push_back(std::move(command)); - } - - std::optional, std::string>> - CommandLoader::run(const InstanceBundle &bundle, - const Request &request) const { - auto command = std::find_if( - this->commands.begin(), this->commands.end(), - [&](const auto &x) { return x->get_name() == request.command_id; }); - - if (command == this->commands.end()) { - return std::nullopt; - } - - if ((*command)->get_permission_level() > - request.user_rights.get_level()) { - return std::nullopt; - } - - pqxx::work work(request.conn); - - pqxx::result action_query = work.exec( - "SELECT sent_at FROM actions WHERE user_id = " + - std::to_string(request.user.get_id()) + - " AND channel_id = " + std::to_string(request.channel.get_id()) + - " AND command = '" + request.command_id + "' ORDER BY sent_at DESC"); - - if (!action_query.empty()) { - auto last_sent_at = utils::chrono::string_to_time_point( - action_query[0][0].as()); - - auto now = std::chrono::system_clock::now(); - auto now_time_it = std::chrono::system_clock::to_time_t(now); - auto now_tm = std::gmtime(&now_time_it); - now = std::chrono::system_clock::from_time_t(std::mktime(now_tm)); - - auto difference = std::chrono::duration_cast( - now - last_sent_at); - - if (difference.count() < command->get()->get_delay_seconds()) { - return std::nullopt; - } - } - - std::string arguments; - - if (request.subcommand_id.has_value()) { - arguments += request.subcommand_id.value() + " "; - } - - if (request.message.has_value()) { - arguments += request.message.value(); - } - - work.exec( - "INSERT INTO actions(user_id, channel_id, command, arguments, " - "full_message) VALUES (" + - std::to_string(request.user.get_id()) + ", " + - std::to_string(request.channel.get_id()) + ", '" + - request.command_id + "', '" + arguments + "', '" + - request.irc_message.message + "')"); - - work.commit(); - - return (*command)->run(bundle, request); - } - } -} -- cgit v1.2.3