diff --git a/src/core/botinstance.rs b/src/core/botinstance.rs index 090b0d5..03b68a4 100644 --- a/src/core/botinstance.rs +++ b/src/core/botinstance.rs @@ -240,7 +240,7 @@ impl BotInstance // pub fn init() -> BotInstance // pub fn init() -> Arc - pub fn init() -> BotInstance + pub async fn init() -> BotInstance { dotenv().ok(); @@ -295,7 +295,7 @@ impl BotInstance // ratelimiters : ratelimiters, // client : client, // } , - botmodules : ModulesManager::init(), + botmodules : ModulesManager::init().await, twitch_oauth : oauth_token, bot_channels : botchannels, // identity : IdentityManager::init(), @@ -620,6 +620,7 @@ impl BotInstance // async fn listener_main_prvmsg(self,msg:&PrivmsgMessage) -> () { // async fn listener_main_prvmsg(self:Arc,msg:&PrivmsgMessage) -> () { pub async fn listener_main_prvmsg(bot:BotAR,msg:&PrivmsgMessage) -> () { + println!(">> Inner listenermain_prvmsg()"); // let a = a; // println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); @@ -672,18 +673,25 @@ impl BotInstance // let hacts = boxed_bot.clone().lock().await.get_botactions(); // let hacts = bot.read().await.get_botactions(); let botlock = bot.read().await; - let hacts = botlock.botmodules.botactions.read().await; - // let hacts = hacts - for (_m,acts) in &(*hacts) { - + let hacts = Arc::clone(&botlock.botmodules.botactions); + // let hacts = hacts.read().await; + let a = hacts.read().await; + println!("hacts size : {}",(*a).len()); + println!(">> Inner listenermain_prvmsg() >> before for loop of bot actions"); + // println!(">> Inner listenermain_prvmsg() >> before for loop of bot actions : {:?}",*hacts); + // let hacts = hacts + // let l = *hacts; + for (_m,acts) in &*hacts.read().await { + + println!(">> Inner listenermain_prvmsg() >> checking bot actions"); // let bot = bot; for a in acts { - + println!(">> Inner listenermain_prvmsg() >> checking bot actions >> 2"); let _act = match a { @@ -702,6 +710,8 @@ impl BotInstance // println!("args : {v}"); // } + println!("Reviewing internal commands"); + let inpt = msg.message_text.split("\n").next().expect("ERROR during BotCommand"); let inpt = msg.message_text.split(" ").next().expect("ERROR during BotCommand"); @@ -829,7 +839,7 @@ impl BotInstance let botlock = bot.read().await; let id = botlock.get_identity(); let id = id.read().await; - let eval= id.can_user_run_PRVMSG(&msg, c.required_roles.clone()); + let eval= id.can_user_run_PRVMSG(&msg, c.required_roles.clone()).await; match eval { // Ok(Permissible::Allow) => (), Permissible::Allow => { diff --git a/src/core/botmodules.rs b/src/core/botmodules.rs index 38f1fc6..3d55f3c 100644 --- a/src/core/botmodules.rs +++ b/src/core/botmodules.rs @@ -277,7 +277,8 @@ impl BotActionTrait for Listener // let mgr = &mut bot.botmodules; // let mgr = bot.botmodules; // self.add_to_modmgr(Arc::new(*mgr)); - self.add_to_modmgr(bot.botmodules); + println!("Adding action to bot"); + self.add_to_modmgr(bot.botmodules).await; } // fn add_to_modmgr(self, modmgr:&mut ModulesManager) { @@ -286,6 +287,7 @@ impl BotActionTrait for Listener // async fn add_to_modmgr(self, modmgr:&'static ModulesManager) { async fn add_to_modmgr(self, modmgr:Arc) { // let modmgr = *modmgr.lock().await; + println!("Adding action to module manager"); modmgr.add_botaction(self.module.clone(), BotAction::L(self)).await; // modmgr.add_botaction(self.module.clone(), BotAction:L(self)) } @@ -311,7 +313,7 @@ impl ModulesManager { // pub fn init() -> Arc> - pub fn init() -> Arc + pub async fn init() -> Arc { @@ -331,8 +333,9 @@ impl ModulesManager // crate::core::identity::init(a.clone()); // crate::core::identity::init(&mgr); + println!("ModulesManager > init() > Adding modules"); let mgra = Arc::new(mgr); - crate::core::identity::init(Arc::clone(&mgra)); + crate::core::identity::init(Arc::clone(&mgra)).await; // initialize custom crate modules // crate::modules::init(&mut mgr); @@ -340,7 +343,7 @@ impl ModulesManager // crate::modules::init(a.clone()); crate::modules::init(Arc::clone(&mgra)); - + println!(">> Modules Manager : End of Init"); @@ -383,6 +386,7 @@ impl ModulesManager // pub fn add_botaction(mut self, in_module:ModType, in_action:BotAction ) -> ModulesManager { //pub fn add_botaction(&mut self, in_module:ModType, in_action:BotAction ) -> () { pub async fn add_botaction(&self, in_module:ModType, in_action:BotAction ) { + println!("Add botaction called"); /* adds a BotAction to the Modules Manager - This will require a BotModule passed as well This will including the logic of a valid add diff --git a/src/core/identity.rs b/src/core/identity.rs index 7026835..70d9508 100644 --- a/src/core/identity.rs +++ b/src/core/identity.rs @@ -29,12 +29,14 @@ fn adminvector() -> Vec { // pub fn init(mgr:&mut ModulesManager) -pub fn init(mgr:Arc) +pub async fn init(mgr:Arc) { - let a = actions_util::asyncbox(cmd_promote) ; + println!("Went into Identiy Module init"); - BotCommand { + // let a = actions_util::asyncbox(cmd_promote) ; + + let tempb = BotCommand { module : BotModule(String::from("identity")), command : String::from("promote"), // command call name alias : vec![], // String of alternative names @@ -46,7 +48,9 @@ pub fn init(mgr:Arc) UserRole::Broadcaster, UserRole::BotAdmin, ], - }.add_to_modmgr(Arc::clone(&mgr)); + }; + + tempb.add_to_modmgr(Arc::clone(&mgr)); // async fn cmd_promote(mut bot:Arc>,msg:PrivmsgMessage) // async fn cmd_promote(mut bot:&BotInstance,msg:PrivmsgMessage) -> &BotInstance @@ -246,7 +250,21 @@ pub fn init(mgr:Arc) } - BotCommand { + // BotCommand { + // module : BotModule(String::from("identity")), + // command : String::from("demote"), // command call name + // alias : vec![], // String of alternative names + // exec_body : actions_util::asyncbox(cmd_demote) , + // help : String::from("demote"), + // required_roles : vec![ + // UserRole::Mod(ChType::Channel(String::new())), + // UserRole::SupMod(ChType::Channel(String::new())), + // UserRole::Broadcaster, + // UserRole::BotAdmin, + // ], + // }.add_to_modmgr(Arc::clone(&mgr)); + + let tempb = BotCommand { module : BotModule(String::from("identity")), command : String::from("demote"), // command call name alias : vec![], // String of alternative names @@ -258,8 +276,9 @@ pub fn init(mgr:Arc) UserRole::Broadcaster, UserRole::BotAdmin, ], - }.add_to_modmgr(Arc::clone(&mgr)); - + }; + + tempb.add_to_modmgr(Arc::clone(&mgr)).await; // async fn cmd_demote(mut _chat:Arc>,_msg:PrivmsgMessage) { async fn cmd_demote(mut _chat:BotAR,_msg:PrivmsgMessage) { @@ -268,7 +287,21 @@ pub fn init(mgr:Arc) - BotCommand { + // BotCommand { + // module : BotModule(String::from("identity")), + // command : String::from("getroles"), // command call name + // alias : vec![], // String of alternative names + // exec_body : actions_util::asyncbox(getroles) , + // help : String::from("getroles"), + // required_roles : vec![ + // UserRole::Mod(ChType::Channel(String::new())), + // UserRole::SupMod(ChType::Channel(String::new())), + // UserRole::Broadcaster, + // UserRole::BotAdmin, + // ], + // }.add_to_modmgr(Arc::clone(&mgr)); + + let tempcomm = BotCommand { module : BotModule(String::from("identity")), command : String::from("getroles"), // command call name alias : vec![], // String of alternative names @@ -280,7 +313,9 @@ pub fn init(mgr:Arc) UserRole::Broadcaster, UserRole::BotAdmin, ], - }.add_to_modmgr(Arc::clone(&mgr)); + }; + + tempcomm.add_to_modmgr(Arc::clone(&mgr)).await; // async fn getroles(bot:Arc>,msg:PrivmsgMessage) { @@ -401,7 +436,7 @@ pub fn init(mgr:Arc) - + println!("End of Init MOdule add"); } @@ -467,7 +502,7 @@ impl IdentityManager { // pub fn can_user_run_PRVMSG(self,msg:&PrivmsgMessage,cmdreqroles:Vec) -> Result> // pub fn can_user_run_PRVMSG(&self,msg:&PrivmsgMessage,cmdreqroles:Vec) -> Permissible // pub async fn can_user_run_PRVMSG(self,msg:&PrivmsgMessage,cmdreqroles:Vec) -> Permissible - pub fn can_user_run_PRVMSG(&self,msg:&PrivmsgMessage,cmdreqroles:Vec) -> Permissible + pub async fn can_user_run_PRVMSG(&self,msg:&PrivmsgMessage,cmdreqroles:Vec) -> Permissible { // println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); @@ -513,7 +548,7 @@ impl IdentityManager { ChType::Channel(msg.channel_login.to_owned()), sender_badge, cmdreqroles - ) ; + ).await ; } diff --git a/src/main.rs b/src/main.rs index 4278813..7847da3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,24 @@ pub type BotAR = Arc>; #[tokio::main] pub async fn main() { - let bot = BotInstance::init(); + let bot = BotInstance::init().await; + + let a = Arc::clone(&bot.botmodules.botactions); + let a = a.read().await; + // let a = *a; + + for (_,acts) in &*a { + for act in acts { + match act { + crate::core::botmodules::BotAction::C(b) => println!("bot actiions: {}",b.command), + crate::core::botmodules::BotAction::L(l) => println!("bot actiions: {}",l.name), + _ => println!("Not a valid match??"), + } + + } + }; + + println!("Starting runner.."); bot.runner().await;