diff options
| author | ilotterytea <iltsu@alright.party> | 2025-04-17 02:40:32 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-04-17 02:40:32 +0500 |
| commit | 0d1935d624a0f7c10cadc752c37f354bc792af32 (patch) | |
| tree | 18a0fa759b8efc9bb09d10e9207b939f2adbed83 /bot/src/modules/timer.hpp | |
| parent | 05a2b0472ed116fb5939a25e44aaecbcfa9d7537 (diff) | |
feat: !timer in lua
Diffstat (limited to 'bot/src/modules/timer.hpp')
| -rw-r--r-- | bot/src/modules/timer.hpp | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/bot/src/modules/timer.hpp b/bot/src/modules/timer.hpp deleted file mode 100644 index 5fd3549..0000000 --- a/bot/src/modules/timer.hpp +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -#include <string> -#include <vector> - -#include "../bundle.hpp" -#include "../commands/command.hpp" -#include "../commands/response_error.hpp" - -namespace bot { - namespace mod { - class Timer : public command::Command { - std::string get_name() const override { return "timer"; } - - schemas::PermissionLevel get_permission_level() const override { - return schemas::PermissionLevel::MODERATOR; - } - - std::vector<std::string> get_subcommand_ids() const override { - return {"new", "remove"}; - } - - command::Response run(const InstanceBundle &bundle, - const command::Request &request) const override { - if (!request.subcommand_id.has_value()) { - throw ResponseException<NOT_ENOUGH_ARGUMENTS>( - request, bundle.localization, command::SUBCOMMAND); - } - - const std::string &subcommand_id = request.subcommand_id.value(); - - if (!request.message.has_value()) { - throw ResponseException<ResponseError::NOT_ENOUGH_ARGUMENTS>( - request, bundle.localization, command::CommandArgument::NAME); - } - - const std::string &message = request.message.value(); - std::vector<std::string> s = utils::string::split_text(message, ' '); - - std::string name = s[0]; - s.erase(s.begin()); - - pqxx::work work(request.conn); - pqxx::result timers = work.exec( - "SELECT id FROM timers WHERE name = '" + name + - "' AND channel_id = " + std::to_string(request.channel.get_id())); - - if (subcommand_id == "new") { - if (!timers.empty()) { - throw ResponseException<ResponseError::NAMESAKE_CREATION>( - request, bundle.localization, name); - } - - if (s.empty()) { - throw ResponseException<ResponseError::NOT_ENOUGH_ARGUMENTS>( - request, bundle.localization, - command::CommandArgument::INTERVAL); - } - - int interval_s; - - try { - interval_s = std::stoi(s[0]); - } catch (std::exception e) { - throw ResponseException<ResponseError::INCORRECT_ARGUMENT>( - request, bundle.localization, s[0]); - } - - s.erase(s.begin()); - - if (s.empty()) { - throw ResponseException<ResponseError::NOT_ENOUGH_ARGUMENTS>( - request, bundle.localization, - command::CommandArgument::MESSAGE); - } - - std::string m = utils::string::str(s.begin(), s.end(), ' '); - - work.exec( - "INSERT INTO timers(channel_id, name, message, interval_sec) " - "VALUES " - "(" + - std::to_string(request.channel.get_id()) + ", '" + name + - "', '" + m + "', " + std::to_string(interval_s) + ")"); - work.commit(); - - return command::Response( - bundle.localization - .get_formatted_line(request, loc::LineId::TimerNew, {name}) - .value()); - } else if (subcommand_id == "remove") { - if (timers.empty()) { - throw ResponseException<ResponseError::NOT_FOUND>( - request, bundle.localization, name); - } - - work.exec("DELETE FROM timers WHERE id = " + - std::to_string(timers[0][0].as<int>())); - work.commit(); - - return command::Response( - bundle.localization - .get_formatted_line(request, loc::LineId::TimerDelete, - {name}) - .value()); - } - - throw ResponseException<ResponseError::SOMETHING_WENT_WRONG>( - request, bundle.localization); - } - }; - } -} |
