diff options
Diffstat (limited to 'src/commands/command.hpp')
| -rw-r--r-- | src/commands/command.hpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/commands/command.hpp b/src/commands/command.hpp index 6e05779..6efe505 100644 --- a/src/commands/command.hpp +++ b/src/commands/command.hpp @@ -1,3 +1,7 @@ +#pragma once + +#include <memory> +#include <optional> #include <string> #include <variant> #include <vector> @@ -7,9 +11,23 @@ namespace bot { namespace command { class Command { + public: virtual std::string get_name() = 0; virtual std::variant<std::vector<std::string>, std::string> run( const irc::Message<irc::MessageType::Privmsg> &msg) = 0; }; + + class CommandLoader { + public: + CommandLoader(); + ~CommandLoader() = default; + + void add_command(std::unique_ptr<Command> cmd); + std::optional<std::variant<std::vector<std::string>, std::string>> run( + const irc::Message<irc::MessageType::Privmsg> &msg); + + private: + std::vector<std::unique_ptr<Command>> commands; + }; } } |
