From 85e486db6237870b585f07cfd4ea26af4a65bf85 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sun, 1 Nov 2020 00:24:43 -0700 Subject: feat (desc) feat: - implement somewhat ok but not done version of lavalink - new macros - plugin system - random hi plugin --- src/modules/plugins/macros.rs | 104 ++++++++++++++++++++++++++++++++++++ src/modules/plugins/mod.rs | 3 +- src/modules/plugins/set_bot_game.rs | 10 ++++ 3 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 src/modules/plugins/set_bot_game.rs (limited to 'src/modules/plugins') diff --git a/src/modules/plugins/macros.rs b/src/modules/plugins/macros.rs index f28cf7c..84c6226 100644 --- a/src/modules/plugins/macros.rs +++ b/src/modules/plugins/macros.rs @@ -1,4 +1,5 @@ #![macro_use] +#![allow(unused_macros)] #[macro_export] macro_rules! exec_on_message { @@ -9,3 +10,106 @@ macro_rules! exec_on_message { $($plugin::on_message($ctx, /* &pool, */ $message);)* }} } + +macro_rules! exec_on_message_update { + ([$ctx:expr, $event:expr], $($plugin:ident), *) => {{ + // use utils::config::get_pool; + // let pool = get_pool(&$ctx); + + $($plugin::on_message_update($ctx, /* &pool, */ $event);)* + }} +} + +macro_rules! exec_on_message_delete { + ([$ctx:expr, $channel_id:expr, $msg_id:expr], $($plugin:ident), *) => {{ + // use utils::config::get_pool; + // let pool = get_pool(&$ctx); + + $($plugin::on_message_delete($ctx, /* &pool, */ $channel_id, $msg_id);)* + }} +} + +macro_rules! exec_on_reaction_add { + ([$ctx:expr, $reaction:expr], $($plugin:ident), *) => {{ + // use utils::config::get_pool; + // let pool = get_pool(&$ctx); + + $($plugin::on_reaction_add($ctx, /* &pool, */ $reaction);)* + }} +} + +// macro_rules! exec_on_reaction_remove { +// ([$ctx:expr, $reaction:expr], $($plugin:ident), *) => {{ +// use utils::config::get_pool; +// let pool = get_pool(&$ctx); + +// $($plugin::on_reaction_remove($ctx, &pool, $reaction);)* +// }} +// } + +macro_rules! exec_on_ready { + ([$ctx:expr, $ready:expr], $($plugin:ident), *) => { + $($plugin::on_ready($ctx, $ready);)* + } +} + +macro_rules! exec_on_presence_update { + ([$ctx:expr, $presenceupdateevent:expr], $($plugin:ident), *) => { + $($plugin::on_presence_update($ctx, $presenceupdateevent);)* + } +} + +macro_rules! exec_on_guild_member_addition { + ([$ctx:expr, $GuildId:expr, $member:expr], $($plugin:ident), *) => {{ + // use utils::config::get_pool; + // let pool = get_pool(&$ctx); + + $($plugin::on_guild_member_addition($ctx, /* &pool, */ $GuildId, $member);)* + }} +} + + +macro_rules! exec_on_guild_member_removal { + ([$ctx:expr, $GuildId:expr, $user:expr, $member:expr], $($plugin:ident), *) => {{ + // use utils::config::get_pool; + // let pool = get_pool(&$ctx); + + $($plugin::on_guild_member_removal($ctx, /* &pool, */ $GuildId, $user, $member);)* + }} +} + +macro_rules! exec_on_guild_ban_addition { + ([$ctx:expr, $GuildId:expr, $user:expr], $($plugin:ident), *) => { + $($plugin::on_guild_ban_addition($ctx, $GuildId, $user);)* + } +} + +macro_rules! exec_on_guild_ban_removal { + ([$ctx:expr, $GuildId:expr, $user:expr], $($plugin:ident), *) => { + $($plugin::on_guild_ban_removal($ctx, $GuildId, $user);)* + } +} + +macro_rules! exec_on_guild_member_update { + ([$ctx:expr, $prev_member:expr, $curr_member:expr], $($plugin:ident), *) => { + $($plugin::on_guild_member_update($ctx, $prev_member, $curr_member);)* + } +} + +macro_rules! exec_on_guild_create { + ([$ctx:expr, $guild:expr, $if_joined:expr], $($plugin:ident), *) => { + $($plugin::on_guild_create($ctx, $guild, $if_joined);)* + } +} + +macro_rules! exec_on_guild_members_chunk { + ([$ctx:expr, $guild_id:expr, $members:expr], $($plugin:ident), *) => { + $($plugin::on_guild_members_chunk($ctx, $guild_id, $members);)* + } +} + +macro_rules! exec_on_guild_update { + ([$ctx:expr, $guild:expr, $partial_guild:expr], $($plugin:ident), *) => { + $($plugin::on_guild_update($ctx, $guild, $partial_guild);)* + } +} diff --git a/src/modules/plugins/mod.rs b/src/modules/plugins/mod.rs index 10e3e24..2d01861 100644 --- a/src/modules/plugins/mod.rs +++ b/src/modules/plugins/mod.rs @@ -1,3 +1,2 @@ -// #[macro_use] pub mod macros; - +pub mod macros; pub mod random_hi; diff --git a/src/modules/plugins/set_bot_game.rs b/src/modules/plugins/set_bot_game.rs new file mode 100644 index 0000000..44ab51a --- /dev/null +++ b/src/modules/plugins/set_bot_game.rs @@ -0,0 +1,10 @@ +use serenity::prelude::Context; +use serenity::model::gateway::{Ready, Game}; +use std::env; + +pub fn on_message(ctx: &Context, _: &Ready) { + match env::var("BOT_GAME") { + Ok(val) => ctx.set_game(Game::playing(&val)), + Err(_) => return + }; +} -- cgit v1.2.3