From ead8d4e14f939eca0be580199de56a3d6039e446 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Thu, 10 Apr 2025 23:37:38 +0500 Subject: feat: !chatters in lua --- bot/src/commands/command.cpp | 2 -- bot/src/config.cpp | 13 ++++++++ bot/src/config.hpp | 4 +++ bot/src/modules/chatters.hpp | 78 -------------------------------------------- 4 files changed, 17 insertions(+), 80 deletions(-) delete mode 100644 bot/src/modules/chatters.hpp (limited to 'bot') 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 #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()); 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()); 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 rpost_path = std::nullopt; + + std::optional 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 -#include -#include -#include -#include - -#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( - 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( - request, bundle.localization, response.status_code, - response.status_line); - } - } - }; -} -- cgit v1.2.3