#ifndef API_BOT_HPP_ #define API_BOT_HPP_ #include #include #include #include #include using std::string; using std::cout; using std::endl; template class Bot { private: void initializeNets(const json& data) { initializeNetsImpl(data, std::index_sequence_for{}); } template void initializeNetsImpl(const json& data, std::index_sequence) { net = std::make_tuple(std::make_unique(data)...); } json data; public: std::tuple...> net; Bot(const json& data) : data(data) { initializeNets(data); } auto& use(const int number) { return *std::get(net); } string id() { return data["d"]["user"]["id"]; } bool isBot() { try { return data["d"]["user"]["bot"]; } catch (std::exception& e) { return false; } } }; #endif