From d75a5081c57c06e261b040a39078257a141864dd Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 21 Apr 2024 01:43:16 +0500 Subject: feat: message handlers --- src/irc/client.hpp | 16 ++++++++++++++++ src/irc/message.hpp | 9 +++++++++ 2 files changed, 25 insertions(+) (limited to 'src/irc') diff --git a/src/irc/client.hpp b/src/irc/client.hpp index e6846d2..6f0791f 100644 --- a/src/irc/client.hpp +++ b/src/irc/client.hpp @@ -4,6 +4,8 @@ #include +#include "message.hpp" + namespace RedpilledBot { namespace IRC { class Client { @@ -13,6 +15,17 @@ namespace RedpilledBot { void run(); + template + void on(typename MessageHandler::fn function) { + switch (T) { + case Privmsg: + this->onPrivmsg = function; + break; + default: + break; + } + } + private: void authorize(); @@ -23,6 +36,9 @@ namespace RedpilledBot { std::string port; ix::WebSocket websocket; + + // Message handlers + typename MessageHandler::fn onPrivmsg; }; } } diff --git a/src/irc/message.hpp b/src/irc/message.hpp index b0ae353..23bbe29 100644 --- a/src/irc/message.hpp +++ b/src/irc/message.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -94,5 +95,13 @@ namespace RedpilledBot { return std::nullopt; } + template + struct MessageHandler; + + template <> + struct MessageHandler { + using fn = std::function message)>; + }; + } } -- cgit v1.2.3