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