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