From 8d0c303642c6a80e6f927c70914b3c75ac015f42 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 5 May 2024 16:24:50 +0500 Subject: feat: handle response exception --- src/handlers.cpp | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/handlers.cpp b/src/handlers.cpp index c3f12d3..0eec2b0 100644 --- a/src/handlers.cpp +++ b/src/handlers.cpp @@ -1,8 +1,8 @@ #include "handlers.hpp" +#include #include #include -#include #include #include "bundle.hpp" @@ -10,6 +10,7 @@ #include "commands/request.hpp" #include "commands/request_util.hpp" #include "irc/message.hpp" +#include "localization/line_id.hpp" namespace bot::handlers { void handle_private_message( @@ -21,24 +22,32 @@ namespace bot::handlers { command::generate_request(command_loader, message, conn); if (request.has_value()) { - auto o_response = command_loader.run(bundle, request.value()); + try { + auto response = command_loader.run(bundle, request.value()); - if (o_response.has_value()) { - auto response = o_response.value(); - - try { - auto str = std::get(response); - bundle.irc_client.say(message.source.login, str); - } catch (const std::exception &e) { - } - - try { - auto strs = std::get>(response); - for (const std::string &str : strs) { + if (response.has_value()) { + try { + auto str = std::get(*response); bundle.irc_client.say(message.source.login, str); + } catch (const std::exception &e) { + } + + try { + auto strs = std::get>(*response); + for (const std::string &str : strs) { + bundle.irc_client.say(message.source.login, str); + } + } catch (const std::exception &e) { } - } catch (const std::exception &e) { } + } catch (const std::exception &e) { + std::string line = + bundle.localization + .get_formatted_line(request.value(), loc::LineId::ErrorTemplate, + {e.what()}) + .value(); + + bundle.irc_client.say(message.source.login, line); } } } -- cgit v1.2.3