#pragma once #include #include #include #include #include #include "../irc/message.hpp" namespace bot { namespace command { class Command { public: virtual std::string get_name() = 0; virtual std::variant, std::string> run( const irc::Message &msg) = 0; }; class CommandLoader { public: CommandLoader(); ~CommandLoader() = default; void add_command(std::unique_ptr cmd); std::optional, std::string>> run( const irc::Message &msg); const std::vector> &get_commands() const { return this->commands; }; private: std::vector> commands; }; } }