#pragma once #include #include #include #include #include #include "../irc/message.hpp" #include "../schemas/channel.hpp" #include "../schemas/user.hpp" namespace bot::command { struct Request; } #include "commands/command.hpp" #include "database.hpp" namespace bot::command { struct Requester { schemas::Channel channel; schemas::ChannelPreferences channel_preferences; schemas::User user; schemas::UserRights user_rights; }; struct Request { std::string command_id; std::optional subcommand_id; std::optional message; const irc::Message &irc_message; const Requester requester; sol::table as_lua_table(std::shared_ptr luaState) const; }; std::optional generate_request( const command::CommandLoader &command_loader, const irc::Message &irc_message, const Requester &requester, std::unique_ptr &conn); std::optional get_requester( const irc::Message &irc_message, std::unique_ptr &conn, const Configuration &cfg); }