diff options
| author | ilotterytea <iltsu@alright.party> | 2025-04-10 23:37:38 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-04-10 23:37:38 +0500 |
| commit | ead8d4e14f939eca0be580199de56a3d6039e446 (patch) | |
| tree | baaf4c549213bf07d62d3761073d6cb51e397a60 /bot/src | |
| parent | 97189d3f0947294fe3e8f20b559a3634c5ae0ccd (diff) | |
feat: !chatters in lua
Diffstat (limited to 'bot/src')
| -rw-r--r-- | bot/src/commands/command.cpp | 2 | ||||
| -rw-r--r-- | bot/src/config.cpp | 13 | ||||
| -rw-r--r-- | bot/src/config.hpp | 4 | ||||
| -rw-r--r-- | bot/src/modules/chatters.hpp | 78 |
4 files changed, 17 insertions, 80 deletions
diff --git a/bot/src/commands/command.cpp b/bot/src/commands/command.cpp index 19cd31c..73ea90d 100644 --- a/bot/src/commands/command.cpp +++ b/bot/src/commands/command.cpp @@ -13,7 +13,6 @@ #include <string> #include "../bundle.hpp" -#include "../modules/chatters.hpp" #include "../modules/custom_command.hpp" #include "../modules/event.hpp" #include "../modules/help.hpp" @@ -39,7 +38,6 @@ namespace bot { this->add_command(std::make_unique<mod::CustomCommand>()); this->add_command(std::make_unique<mod::Timer>()); this->add_command(std::make_unique<mod::Help>()); - this->add_command(std::make_unique<mod::Chatters>()); this->add_command(std::make_unique<mod::Spam>()); this->add_command(std::make_unique<mod::Settings>()); this->add_command(std::make_unique<mod::User>()); diff --git a/bot/src/config.cpp b/bot/src/config.cpp index 714ff56..cfd900f 100644 --- a/bot/src/config.cpp +++ b/bot/src/config.cpp @@ -25,6 +25,13 @@ namespace bot { } else { cmds["rpost_path"] = sol::nil; } + if (this->commands.paste_path.has_value()) { + cmds["paste_path"] = this->commands.paste_path.value(); + } else { + cmds["paste_path"] = sol::nil; + } + cmds["paste_body_name"] = this->commands.paste_body_name; + cmds["paste_title_name"] = this->commands.paste_title_name; o["commands"] = cmds; // --- OWNER @@ -115,6 +122,12 @@ namespace bot { cmd_cfg.join_allow_from_other_chats = std::stoi(value); } else if (key == "commands.randompost.path") { cmd_cfg.rpost_path = value; + } else if (key == "commands.paste_path") { + cmd_cfg.paste_path = value; + } else if (key == "paste_body_name") { + cmd_cfg.paste_body_name = value; + } else if (key == "paste_title_name") { + cmd_cfg.paste_title_name = value; } else if (key == "owner.name") { diff --git a/bot/src/config.hpp b/bot/src/config.hpp index 05ce0f0..1e918b6 100644 --- a/bot/src/config.hpp +++ b/bot/src/config.hpp @@ -33,6 +33,10 @@ namespace bot { bool join_allow_from_other_chats = false; std::optional<std::string> rpost_path = std::nullopt; + + std::optional<std::string> paste_path = std::nullopt; + std::string paste_body_name = "paste"; + std::string paste_title_name = "title"; }; struct OwnerConfiguration { diff --git a/bot/src/modules/chatters.hpp b/bot/src/modules/chatters.hpp deleted file mode 100644 index 6e4c61c..0000000 --- a/bot/src/modules/chatters.hpp +++ /dev/null @@ -1,78 +0,0 @@ -#pragma once - -#include <ctime> -#include <iomanip> -#include <sstream> -#include <string> -#include <vector> - -#include "../bundle.hpp" -#include "../commands/command.hpp" -#include "../commands/response_error.hpp" -#include "cpr/api.h" -#include "cpr/multipart.h" -#include "cpr/response.h" -#include "nlohmann/json.hpp" - -namespace bot::mod { - class Chatters : public command::Command { - std::string get_name() const override { return "chatters"; } - - schemas::PermissionLevel get_permission_level() const override { - return schemas::PermissionLevel::USER; - } - - int get_delay_seconds() const override { return 10; } - - command::Response run(const InstanceBundle &bundle, - const command::Request &request) const override { - if (!bundle.configuration.url.paste_service.has_value()) { - throw ResponseException<ResponseError::ILLEGAL_COMMAND>( - request, bundle.localization); - } - - auto chatters = bundle.helix_client.get_chatters( - request.channel.get_alias_id(), bundle.irc_client.get_bot_id()); - - std::string body; - - for (const auto &chatter : chatters) { - body += chatter.login + '\n'; - } - - std::time_t t = std::time(nullptr); - std::tm *now = std::localtime(&t); - - std::ostringstream oss; - - oss << std::put_time(now, "%d.%m.%Y %H:%M:%S"); - - cpr::Multipart multipart = { - {"paste", body}, - {"title", request.channel.get_alias_name() + "'s chatter list on " + - oss.str()}}; - - cpr::Response response = cpr::Post( - cpr::Url{*bundle.configuration.url.paste_service + "/paste"}, - multipart); - - if (response.status_code == 201) { - nlohmann::json j = nlohmann::json::parse(response.text); - - std::string id = j["data"]["id"]; - - std::string url = *bundle.configuration.url.paste_service + "/" + id; - - return command::Response( - bundle.localization - .get_formatted_line(request, loc::LineId::ChattersResponse, - {url}) - .value()); - } else { - throw ResponseException<ResponseError::EXTERNAL_API_ERROR>( - request, bundle.localization, response.status_code, - response.status_line); - } - } - }; -} |
