From 9f3b2ea3b4391f4cbbe28463b917936c639491ec Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 21 Apr 2024 13:20:09 +0500 Subject: feat: request --- src/commands/request.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/commands/request.cpp (limited to 'src/commands/request.cpp') diff --git a/src/commands/request.cpp b/src/commands/request.cpp new file mode 100644 index 0000000..72b04c7 --- /dev/null +++ b/src/commands/request.cpp @@ -0,0 +1,62 @@ +#include "request.hpp" + +#include +#include +#include +#include + +#include "../constants.hpp" + +namespace bot { + namespace command { + bool Request::fill_request() { + std::vector parts = + utils::string::split_text(irc_message.message, ' '); + + std::string command_id = parts[0]; + + if (command_id.substr(0, DEFAULT_PREFIX.length()) != DEFAULT_PREFIX) { + return false; + } + + command_id = + command_id.substr(DEFAULT_PREFIX.length(), command_id.length()); + + bool found = std::any_of(this->command_loader.get_commands().begin(), + this->command_loader.get_commands().end(), + [&](const auto &command) { + return command->get_name() == command_id; + }); + + if (!found) { + return false; + } + + this->command_id = command_id; + + parts.erase(parts.begin()); + + if (parts.empty()) { + return true; + } + + std::string subcommand_id = parts[0]; + if (subcommand_id.empty()) { + this->subcommand_id = std::nullopt; + } else { + this->subcommand_id = subcommand_id; + } + parts.erase(parts.begin()); + + std::string message = utils::string::join_vector(parts, ' '); + + if (message.empty()) { + this->message = std::nullopt; + } else { + this->message = message; + } + + return true; + } + } +} -- cgit v1.2.3