#ifndef BOT_JS_V8INSTANCE #define BOT_JS_V8INSTANCE #include #include #include #include #include "../data_structures/Guild.hpp" #include "../data_structures/Channel.hpp" #include "../data_structures/Role.hpp" #include "../data_structures/GuildMember.hpp" #include "../data_structures/User.hpp" class APIHelper; using namespace v8; class V8Instance { public: V8Instance(std::string guild_id, std::shared_ptr ah, std::map *guilds, std::map *channels, std::map *users, std::map *roles); ~V8Instance(); void reload(); void exec_js(std::string js, DiscordObjects::Channel *channel, DiscordObjects::GuildMember *sender, std::string args = ""); private: void clean_up(); void create(); Local create_context(); void add_to_obj(Local &object, std::string field_name, std::string value); void add_to_obj(Local &object, std::string field_name, const char value[]); void add_to_obj(Local &object, std::string field_name, int32_t value); void add_to_obj(Local &object, std::string field_name, bool value); void add_to_obj(Local &object, std::string field_name, Local value); void add_to_obj(Local &object, std::string field_name, Local value); void add_to_obj(Local &object, DiscordObjects::Guild guild); void add_to_obj(Local &object, DiscordObjects::Channel channel); void add_to_obj(Local &object, DiscordObjects::Role role); void add_to_obj(Local &object, DiscordObjects::GuildMember member); static void js_print(const FunctionCallbackInfo &args); static void js_get_server(Local property, const PropertyCallbackInfo &info); static void js_get_channel(Local property, const PropertyCallbackInfo &info); static void js_get_user(Local property, const PropertyCallbackInfo &info); static void js_get_input(Local property, const PropertyCallbackInfo &info); std::map *guilds; std::map *channels; std::map *users; std::map *roles; std::string guild_id; Isolate *isolate; std::shared_ptr ah; /* variables which change when a new command is executed */ std::string print_text; std::string current_input; DiscordObjects::Channel *current_channel; DiscordObjects::GuildMember *current_sender; }; #endif