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