19 #ifndef IRCCD_JS_PLUGIN_HPP
20 #define IRCCD_JS_PLUGIN_HPP
27 #include <irccd/daemon/plugin.hpp>
28 #include <irccd/daemon/server.hpp>
49 static inline const std::string_view
config_property{DUK_HIDDEN_SYMBOL(
"config")};
59 static inline const std::string_view
paths_property{DUK_HIDDEN_SYMBOL(
"paths")};
70 template <typename Value, typename... Args>
71 void push(Value&& value, Args&&... args);
73 template <typename... Args>
74 void call(const
std::
string&, Args&&... args);
100 auto
get_name() const noexcept ->
std::string_view override;
105 auto
get_author() const noexcept ->
std::string_view override;
175 void handle_join(daemon::bot& bot, const daemon::join_event&
event) override;
180 void handle_kick(daemon::bot& bot, const daemon::kick_event&
event) override;
195 void handle_me(daemon::bot& bot, const daemon::me_event&
event) override;
200 void handle_mode(daemon::bot& bot, const daemon::mode_event&
event) override;
210 void handle_nick(daemon::bot& bot, const daemon::nick_event&
event) override;
220 void handle_part(daemon::bot& bot, const daemon::part_event&
event) override;
253 using modules = std::vector<std::unique_ptr<api>>;
268 std::vector<std::string> directories = {},
269 std::vector<std::string> extensions = {
".js"}) noexcept;
274 ~plugin_loader() noexcept;
281 auto get_modules() const noexcept -> const modules&;
288 auto get_modules() noexcept -> modules&;
316 #endif // !IRCCD_PLUGIN_JS_HPP
auto push(duk_context *ctx, T &&value) -> int
Definition: duk.hpp:270
void handle_mode(daemon::bot &bot, const daemon::mode_event &event) override
auto get_paths() const -> map override
void handle_disconnect(daemon::bot &bot, const daemon::disconnect_event &event) override
void handle_load(daemon::bot &bot) override
void set_options(const map &map) override
void handle_message(daemon::bot &bot, const daemon::message_event &event) override
void handle_nick(daemon::bot &bot, const daemon::nick_event &event) override
void set_templates(const map &map) override
void handle_names(daemon::bot &bot, const daemon::names_event &event) override
auto get_templates() const -> map override
void handle_invite(daemon::bot &bot, const daemon::invite_event &event) override
void handle_whois(daemon::bot &bot, const daemon::whois_event &event) override
Abstract plugin.
Definition: plugin.hpp:61
Javascript namespace.
Definition: api.hpp:42
void handle_part(daemon::bot &bot, const daemon::part_event &event) override
auto get_version() const noexcept -> std::string_view override
std::variant< std::monostate, connect_event, disconnect_event, invite_event, join_event, kick_event, me_event, message_event, mode_event, names_event, nick_event, notice_event, part_event, topic_event, whois_event > event
Store all possible events.
Definition: server.hpp:247
void handle_notice(daemon::bot &bot, const daemon::notice_event &event) override
std::vector< std::unique_ptr< api > > modules
The list of Javascript API modules.
Definition: plugin.hpp:253
Javascript plugins for irccd.
Definition: plugin.hpp:44
auto get_license() const noexcept -> std::string_view override
auto get_author() const noexcept -> std::string_view override
auto get_context() noexcept -> duk::context &
void handle_join(daemon::bot &bot, const daemon::join_event &event) override
void set_paths(const map &map) override
RAII based Duktape handler.
Definition: duk.hpp:95
Irccd main instance.
Definition: bot.hpp:58
auto get_name() const noexcept -> std::string_view override
void handle_command(daemon::bot &bot, const daemon::message_event &event) override
static const std::string_view templates_property
Definition: plugin.hpp:54
auto get_options() const -> map override
void handle_reload(daemon::bot &bot) override
std::unordered_map< std::string, std::string > map
Definition: plugin.hpp:68
Implementation for searching Javascript plugins.
Definition: plugin.hpp:248
auto get_summary() const noexcept -> std::string_view override
static const std::string_view config_property
Definition: plugin.hpp:49
plugin(std::string id, std::string path)
static const std::string_view paths_property
Definition: plugin.hpp:59
void handle_connect(daemon::bot &bot, const daemon::connect_event &event) override
void handle_me(daemon::bot &bot, const daemon::me_event &event) override
void handle_kick(daemon::bot &bot, const daemon::kick_event &event) override
Describe a whois information.
Definition: server.hpp:72
void handle_topic(daemon::bot &bot, const daemon::topic_event &event) override
void handle_unload(daemon::bot &bot) override
Operations on different types.
Definition: duk.hpp:254