(cont) botlog module

This commit is contained in:
ModulatingForce 2024-02-13 10:11:49 -05:00
parent fd80921ebb
commit 51d5db3f4e
5 changed files with 411 additions and 78 deletions

View file

@ -57,7 +57,7 @@ pub mod botlog {
/* /*
Module intends to add some layers to logging with the module user only requiring to pass : Module intends to add some layers to logging with the module user only requiring to pass :
- String Log message - String Log message
- Option<String> - Code Module - Option<String> - Code_Module
- Option<PrivmsgMessage> - this is used to parse out Chatter & Channel into the logs - Option<PrivmsgMessage> - this is used to parse out Chatter & Channel into the logs
*/ */
@ -66,28 +66,160 @@ pub mod botlog {
// trace, debug, info, notice, warn, error, fatal // trace, debug, info, notice, warn, error, fatal
fn trace(in_msg:&str,module:Option<String>,prvmsg:Option<PrivmsgMessage>,) -> () { pub fn trace(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> ()
{
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::trace_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
} }
fn debug(prvmsg:Option<PrivmsgMessage>,in_msg:&str) -> () { pub fn debug(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> () {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::debug_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
} }
fn info(prvmsg:Option<PrivmsgMessage>,in_msg:&str) -> () { pub fn info(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> () {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::info_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
} }
fn notice(prvmsg:Option<PrivmsgMessage>,in_msg:&str) -> () { pub fn notice(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> () {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::notice_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
} }
fn warn(prvmsg:Option<PrivmsgMessage>,in_msg:&str) -> () { pub fn warn(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> () {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::warn_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
} }
fn error(prvmsg:Option<PrivmsgMessage>,in_msg:&str) -> () { pub fn error(in_msg:&str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> () {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::error_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
}
pub fn fatal<'a>(in_msg:&'a str,in_module:Option<String>,in_prvmsg:Option<&PrivmsgMessage>) -> &'a str {
let (chnl,chatter) = match in_prvmsg {
Some(prvmsg) => {
//Log::trace(&format!("(#{}) {}: {}", prvmsg.channel_login, prvmsg.sender.name, prvmsg.message_text));
(Some(prvmsg.channel_login.clone()),Some(prvmsg.sender.name.clone())) // <-- Clone fine atm while we're just working with Strings
}
None => {
(None,None)
}
};
Log::fatal_t(
in_msg,
casual_logger::Table::default() //
.str("Channel",&format!("{:?}",chnl))
.str("Chatter",&format!("{:?}",chatter))
.str("Code_Module",&format!("{:?}",in_module))
);
in_msg
} }
} }
@ -156,10 +288,16 @@ impl Chat {
self.client.say_in_reply_to(msg,outmsg).await.unwrap(); self.client.say_in_reply_to(msg,outmsg).await.unwrap();
// println!("(#{}) > {}", msg.channel_login, "rate limit counter increase"); // println!("(#{}) > {}", msg.channel_login, "rate limit counter increase");
Log::trace(&format!("(#{}) > {}", msg.channel_login, "rate limit counter increase")); // Log::trace(&format!("(#{}) > {}", msg.channel_login, "rate limit counter increase"));
botlog::trace(&format!("(#{}) > {}", msg.channel_login, "rate limit counter increase"),
Some("Chat > say_in_reply_to".to_string()) ,
Some(&msg));
contextratelimiter.increment_counter(); contextratelimiter.increment_counter();
// println!("{:?}",self.ratelimiters); // println!("{:?}",self.ratelimiters);
Log::trace(&format!("{:?}",self.ratelimiters)); // Log::trace(&format!("{:?}",self.ratelimiters));
botlog::trace(&format!("{:?}",self.ratelimiters),
Some("Chat > say_in_reply_to".to_string()) ,
Some(&msg));
}, },
ratelimiter::LimiterResp::Skip => { ratelimiter::LimiterResp::Skip => {
(); // do nothing otherwise (); // do nothing otherwise
@ -328,36 +466,57 @@ impl BotInstance
match &msg.channel_login { match &msg.channel_login {
Some(chnl) => { Some(chnl) => {
// println!("NOTICE : (#{}) {}", chnl, msg.message_text) // println!("NOTICE : (#{}) {}", chnl, msg.message_text)
Log::notice(&format!("NOTICE : (#{}) {}", chnl, msg.message_text)); // Log::notice(&format!("NOTICE : (#{}) {}", chnl, msg.message_text));
botlog::notice(&format!("NOTICE : (#{}) {}", chnl, msg.message_text),
Some("BotInstance > runner()".to_string()) ,
None);
}, },
None => { None => {
// println!("NOTICE : {}", msg.message_text); // println!("NOTICE : {}", msg.message_text);
Log::notice(&format!("NOTICE : {}", msg.message_text)); // Log::notice(&format!("NOTICE : {}", msg.message_text));
botlog::notice(&format!("NOTICE : {}", msg.message_text),
Some("BotInstance > runner()".to_string()) ,
None);
}, },
} }
} }
ServerMessage::Privmsg(msg) => { ServerMessage::Privmsg(msg) => {
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); // println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
Log::trace(&format!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text)); // Log::trace(&format!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text));
botlog::debug(&format!("Twitch Chat > {} @ #{}: {}", msg.channel_login, msg.sender.name, msg.message_text),
Some("BotInstance > runner()".to_string()) ,
Some(&msg));
// println!("Privmsg section"); // println!("Privmsg section");
Log::debug(&format!("Privmsg section")); // Log::debug(&format!("Privmsg section"));
botlog::trace(&format!("Privmsg section"),
Some("BotInstance > runner()".to_string()) ,
Some(&msg));
BotInstance::listener_main_prvmsg(Arc::clone(&bot), &msg).await; BotInstance::listener_main_prvmsg(Arc::clone(&bot), &msg).await;
}, },
ServerMessage::Whisper(msg) => { ServerMessage::Whisper(msg) => {
// println!("(w) {}: {}", msg.sender.name, msg.message_text); // println!("(w) {}: {}", msg.sender.name, msg.message_text);
Log::trace(&format!("(w) {}: {}", msg.sender.name, msg.message_text)); // Log::trace(&format!("(w) {}: {}", msg.sender.name, msg.message_text));
botlog::trace(&format!("(w) {}: {}", msg.sender.name, msg.message_text),
Some("BotInstance > runner()".to_string()) ,
None);
}, },
ServerMessage::Join(msg) => { ServerMessage::Join(msg) => {
// println!("JOINED: {}", msg.channel_login); // println!("JOINED: {}", msg.channel_login);
Log::notice(&format!("JOINED: {}", msg.channel_login)); // Log::notice(&format!("JOINED: {}", msg.channel_login));
botlog::notice(&format!("JOINED: {}", msg.channel_login),
Some("BotInstance > runner()".to_string()) ,
None);
}, },
ServerMessage::Part(msg) => { ServerMessage::Part(msg) => {
// println!("PARTED: {}", msg.channel_login); // println!("PARTED: {}", msg.channel_login);
Log::notice(&format!("PARTED: {}", msg.channel_login)); // Log::notice(&format!("PARTED: {}", msg.channel_login));
botlog::notice(&format!("PARTED: {}", msg.channel_login),
Some("BotInstance > runner()".to_string()) ,
None);
}, },
_ => {} _ => {}
}; };
@ -404,7 +563,10 @@ impl BotInstance
pub async fn listener_main_prvmsg(bot:BotAR,msg:&PrivmsgMessage) -> () { pub async fn listener_main_prvmsg(bot:BotAR,msg:&PrivmsgMessage) -> () {
// println!(">> Inner listenermain_prvmsg()"); // println!(">> Inner listenermain_prvmsg()");
Log::trace(">> Inner listenermain_prvmsg()"); // Log::trace(">> Inner listenermain_prvmsg()");
botlog::trace(">> Inner listenermain_prvmsg()",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
// let a = a; // let a = a;
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); // println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
@ -416,15 +578,24 @@ impl BotInstance
// let hacts = hacts.read().await; // let hacts = hacts.read().await;
let a = hacts.read().await; let a = hacts.read().await;
// println!("hacts size : {}",(*a).len()); // println!("hacts size : {}",(*a).len());
Log::debug(&format!("hacts size : {}",(*a).len())); // Log::debug(&format!("hacts size : {}",(*a).len()));
botlog::trace(&format!("hacts size : {}",(*a).len()),
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
// println!(">> Inner listenermain_prvmsg() >> before for loop of bot actions"); // println!(">> Inner listenermain_prvmsg() >> before for loop of bot actions");
Log::trace(">> Inner listenermain_prvmsg() >> before for loop of bot actions"); // Log::trace(">> Inner listenermain_prvmsg() >> before for loop of bot actions");
botlog::trace(">> Inner listenermain_prvmsg() >> before for loop of bot actions",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
for (_m,acts) in &*hacts.read().await { for (_m,acts) in &*hacts.read().await {
// println!(">> Inner listenermain_prvmsg() >> checking bot actions"); // println!(">> Inner listenermain_prvmsg() >> checking bot actions");
Log::trace(">> Inner listenermain_prvmsg() >> checking bot actions"); // Log::trace(">> Inner listenermain_prvmsg() >> checking bot actions");
botlog::trace(">> Inner listenermain_prvmsg() >> checking bot actions",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
// let bot = bot; // let bot = bot;
@ -432,7 +603,10 @@ impl BotInstance
for a in acts { for a in acts {
// println!(">> Inner listenermain_prvmsg() >> checking bot actions >> 2"); // println!(">> Inner listenermain_prvmsg() >> checking bot actions >> 2");
Log::trace(">> Inner listenermain_prvmsg() >> checking bot actions >> 2"); // Log::trace(">> Inner listenermain_prvmsg() >> checking bot actions >> 2");
botlog::trace(">> Inner listenermain_prvmsg() >> checking bot actions >> 2",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let _act = match a { let _act = match a {
@ -452,9 +626,12 @@ impl BotInstance
// } // }
// println!("Reviewing internal commands"); // println!("Reviewing internal commands");
Log::trace("Reviewing internal commands"); // Log::trace("Reviewing internal commands");
botlog::trace("Reviewing internal commands",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let inpt = msg.message_text.split("\n").next().expect("ERROR during BotCommand"); // let inpt = msg.message_text.split("\n").next().expect("ERROR during BotCommand");
let inpt = msg.message_text.split(" ").next().expect("ERROR during BotCommand"); let inpt = msg.message_text.split(" ").next().expect("ERROR during BotCommand");
@ -481,19 +658,35 @@ impl BotInstance
if confirmed_bot_command { if confirmed_bot_command {
// println!("Confirmed bot command"); // println!("Confirmed bot command");
Log::debug("Confirmed bot command"); // Log::debug("Confirmed bot command");
botlog::debug("Confirmed bot command",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
// println!("Going for botlock"); // println!("Going for botlock");
Log::trace("Going for botlock"); // Log::trace("Going for botlock");
botlog::trace("Going for botlock",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let botlock = bot.read().await; let botlock = bot.read().await;
// println!("Going for identity"); // println!("Going for identity");
Log::trace("Going for identity"); // Log::trace("Going for identity");
botlog::trace("Going for identity",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let id = botlock.get_identity(); let id = botlock.get_identity();
let eval = { let eval = {
let mut id = id.write().await; let mut id = id.write().await;
// println!("Unlocking identity"); // println!("Unlocking identity");
Log::trace("Unlocking identity"); // Log::trace("Unlocking identity");
botlog::trace("Unpacking identity",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let (a,b) = id.can_user_run_PRVMSG(&msg, c.required_roles.clone()).await; let (a,b) = id.can_user_run_PRVMSG(&msg, c.required_roles.clone()).await;
// // [-] #todo : need ot add functionality around here to do an o7 when a mod has been promoted => Preferring to do this outside the mutex // // [-] #todo : need ot add functionality around here to do an o7 when a mod has been promoted => Preferring to do this outside the mutex
// if let ChangeResult::Success(b) = b { // if let ChangeResult::Success(b) = b {
@ -507,33 +700,54 @@ impl BotInstance
}; };
// println!("Checking if permissible"); // println!("Checking if permissible");
Log::trace("Checking if permissible"); Log::trace("Checking if permissible");
botlog::trace("Checking if permissible",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let (eval , rolechange) = eval; let (eval , rolechange) = eval;
if let ChangeResult::Success(b) = rolechange { if let ChangeResult::Success(b) = rolechange {
if b.to_lowercase().contains(&"Auto Promoted Mod".to_lowercase()) { if b.to_lowercase().contains(&"Auto Promoted Mod".to_lowercase()) {
botlog::notice("Assigning Mod UserRole to Mod",
Some("botinstance > listener_main_prvmsg()".to_string()), Some(&msg));
// println!("Read() lock Bot"); // println!("Read() lock Bot");
Log::trace("Read() lock Bot"); // Log::trace("Read() lock Bot");
botlog::trace("Read() lock Bot",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let botlock = bot.read().await; let botlock = bot.read().await;
let outstr = "o7 a Mod. I kneel to serve! pepeKneel ".to_string(); let outstr = "o7 a Mod. I kneel to serve! pepeKneel ".to_string();
(*botlock).botmgrs.chat.say_in_reply_to(msg, outstr).await; (*botlock).botmgrs.chat.say_in_reply_to(msg, outstr).await;
} }
} }
match eval { match eval {
Permissible::Allow => { Permissible::Allow => {
// println!("Executed as permissible"); // println!("Executed as permissible");
Log::debug("Executed as permissible"); // Log::debug("Executed as permissible");
botlog::debug("Executed as permissible",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
let a = Arc::clone(&bot); let a = Arc::clone(&bot);
c.execute(a, msg.clone()).await; c.execute(a, msg.clone()).await;
// println!("exit out of execution"); // println!("exit out of execution");
Log::trace("exit out of execution"); // Log::trace("exit out of execution");
botlog::trace("exit out of execution",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
} }
Permissible::Block => { Permissible::Block => {
// println!("User Not allowed to run command"); // println!("User Not allowed to run command");
Log::info("User Not allowed to run command"); // Log::info("User Not allowed to run command");
botlog::info("User Not allowed to run command",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
}, },
// _ => (), // _ => (),
}; };
@ -558,7 +772,10 @@ impl BotInstance
// // [ ] There should be a BotCommand Listener to check for prefixes ran // // [ ] There should be a BotCommand Listener to check for prefixes ran
// println!("End of Separate Listener Main prvmsg"); // println!("End of Separate Listener Main prvmsg");
Log::trace("End of Separate Listener Main prvmsg"); // Log::trace("End of Separate Listener Main prvmsg");
botlog::trace("End of Separate Listener Main prvmsg",
Some("BotInstance > listener_main_prvmsg()".to_string()) ,
Some(&msg));
// self // self
// bot // bot

View file

@ -17,7 +17,7 @@ use tokio::sync::Mutex;
use crate::core::botinstance::{self, BotInstance}; use crate::core::botinstance::{self, botlog, BotInstance};
use std::rc::Rc; use std::rc::Rc;
// use tokio::sync::RwLock; // use tokio::sync::RwLock;
@ -201,14 +201,20 @@ impl BotActionTrait for Listener
async fn add_to_bot(self, bot:BotInstance) { async fn add_to_bot(self, bot:BotInstance) {
// println!("Adding action to bot"); // println!("Adding action to bot");
Log::trace("Adding action to bot"); // Log::trace("Adding action to bot");
botinstance::botlog::trace("Adding action to bot",
Some("BotModules > BotActionTrait > add_to_bot()".to_string()) ,
None);
self.add_to_modmgr(bot.botmodules).await; self.add_to_modmgr(bot.botmodules).await;
} }
async fn add_to_modmgr(self, modmgr:Arc<ModulesManager>) { async fn add_to_modmgr(self, modmgr:Arc<ModulesManager>) {
// let modmgr = *modmgr.lock().await; // let modmgr = *modmgr.lock().await;
// println!("Adding action to module manager"); // println!("Adding action to module manager");
Log::trace("Adding action to module manager"); // Log::trace("Adding action to module manager");
botinstance::botlog::trace("Adding action to module manager",
Some("BotModules > BotActionTrait > add_to_bot()".to_string()) ,
None);
modmgr.add_botaction(self.module.clone(), BotAction::L(self)).await; modmgr.add_botaction(self.module.clone(), BotAction::L(self)).await;
} }
@ -245,7 +251,11 @@ impl ModulesManager
// :: [x] initialize core modules // :: [x] initialize core modules
println!("ModulesManager > init() > Adding modules"); // println!("ModulesManager > init() > Adding modules");
botlog::debug("ModulesManager > init() > Adding modules",
Some("ModulesManager > init()".to_string()),
None
);
let mgra = Arc::new(mgr); let mgra = Arc::new(mgr);
crate::core::identity::init(Arc::clone(&mgra)).await; crate::core::identity::init(Arc::clone(&mgra)).await;
@ -254,7 +264,11 @@ impl ModulesManager
println!(">> Modules Manager : End of Init"); // println!(">> Modules Manager : End of Init");
botlog::trace(">> Modules Manager : End of Init",
Some("ModulesManager > init()".to_string()),
None
);
mgra mgra
} }
@ -285,7 +299,14 @@ impl ModulesManager
pub async fn add_botaction(&self, in_module:ModType, in_action:BotAction ) { pub async fn add_botaction(&self, in_module:ModType, in_action:BotAction ) {
println!("Add botaction called"); // println!("Add botaction called");
botlog::trace("Add botaction called",
Some("ModulesManager > init()".to_string()),
None
);
/* /*
adds a BotAction to the Modules Manager - This will require a BotModule passed as well adds a BotAction to the Modules Manager - This will require a BotModule passed as well
This will including the logic of a valid add This will including the logic of a valid add
@ -426,8 +447,16 @@ impl ModulesManager
// modactions.push(BotAction::L(newlistener)); // modactions.push(BotAction::L(newlistener));
modactions.push(in_action); modactions.push(in_action);
println!(">> Modules Manager : Called Add bot Action"); // println!(">> Modules Manager : Called Add bot Action");
println!("add_botaction - botactions size : {}",modactions.len()); botlog::trace(">> Modules Manager : Called Add bot Action",
Some("ModulesManager > init()".to_string()),
None
);
// println!("add_botaction - botactions size : {}",modactions.len());
botlog::trace(&format!("add_botaction - botactions size : {}",modactions.len()),
Some("ModulesManager > init()".to_string()),
None
);
} }

View file

@ -34,7 +34,9 @@ fn adminvector() -> Vec<String> {
pub async fn init(mgr:Arc<ModulesManager>) pub async fn init(mgr:Arc<ModulesManager>)
{ {
println!("Went into Identiy Module init"); // println!("Went into Identiy Module init");
botinstance::botlog::trace("Went into Identiy Module init",
Some("identity.rs > init()".to_string()), None);
// let a = actions_util::asyncbox(cmd_promote) ; // let a = actions_util::asyncbox(cmd_promote) ;
@ -57,7 +59,9 @@ pub async fn init(mgr:Arc<ModulesManager>)
async fn cmd_promote(bot:BotAR,msg:PrivmsgMessage) -> () async fn cmd_promote(bot:BotAR,msg:PrivmsgMessage) -> ()
{ {
//println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); //println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
println!("Called cmd promote"); // println!("Called cmd promote");
botinstance::botlog::trace("Called cmd promote",
Some("identity.rs > cmd_prommote()".to_string()), Some(&msg));
// -- If the BotCommand.command was called (e.g., promote) & required roles were validated OUTSIDE of this call // -- If the BotCommand.command was called (e.g., promote) & required roles were validated OUTSIDE of this call
// , this is the current function body to execute // , this is the current function body to execute
@ -87,7 +91,10 @@ pub async fn init(mgr:Arc<ModulesManager>)
*/ */
println!("{}",msg.message_text); // println!("{}",msg.message_text);
botinstance::botlog::trace(&format!("{}",msg.message_text),
Some("identity.rs > cmd_prommote()".to_string()), None);
let mut argv = msg.message_text.split(" "); let mut argv = msg.message_text.split(" ");
argv.next(); // Skip the command name argv.next(); // Skip the command name
@ -122,7 +129,10 @@ pub async fn init(mgr:Arc<ModulesManager>)
// if let Some(a) = *ta { // if let Some(a) = *ta {
if a.contains(&UserRole::BotAdmin) { if a.contains(&UserRole::BotAdmin) {
println!("BotAdmin allowed to promote admin"); // println!("BotAdmin allowed to promote admin");
botinstance::botlog::debug("BotAdmin allowed to promote admin",
Some("identity.rs > cmd_prommote()".to_string()), Some(&msg));
{ {
let botlock = Arc::clone(&bot.read().await.get_identity()); let botlock = Arc::clone(&bot.read().await.get_identity());
@ -184,8 +194,10 @@ pub async fn init(mgr:Arc<ModulesManager>)
tempb.add_to_modmgr(Arc::clone(&mgr)).await; tempb.add_to_modmgr(Arc::clone(&mgr)).await;
// async fn cmd_demote(mut _chat:Arc<Mutex<BotInstance>>,_msg:PrivmsgMessage) { // async fn cmd_demote(mut _chat:Arc<Mutex<BotInstance>>,_msg:PrivmsgMessage) {
async fn cmd_demote(mut _chat:BotAR,_msg:PrivmsgMessage) { async fn cmd_demote(mut _chat:BotAR,msg:PrivmsgMessage) {
println!("Called cmd demote"); // println!("Called cmd demote");
botinstance::botlog::debug("Called cmd demote",
Some("identity.rs > cmd_demote()".to_string()), Some(&msg));
} }
@ -224,7 +236,9 @@ pub async fn init(mgr:Arc<ModulesManager>)
// async fn getroles(bot:Arc<Mutex<BotInstance>>,msg:PrivmsgMessage) { // async fn getroles(bot:Arc<Mutex<BotInstance>>,msg:PrivmsgMessage) {
async fn getroles(bot:BotAR,msg:PrivmsgMessage) { async fn getroles(bot:BotAR,msg:PrivmsgMessage) {
println!("Called cmd getroles"); // println!("Called cmd getroles");
botinstance::botlog::debug("Called cmd getroles",
Some("identity.rs > cmd_getroles()".to_string()), Some(&msg));
/* /*
Usage Usage
@ -297,11 +311,17 @@ pub async fn init(mgr:Arc<ModulesManager>)
// let a = a.lock().await; // let a = a.lock().await;
// let a = bot.get_identity(); // let a = bot.get_identity();
let botlock = bot.read().await; let botlock = bot.read().await;
println!("botlock read"); // println!("botlock read");
botinstance::botlog::trace("botlock read",
Some("identity.rs > init > getroles()".to_string()), Some(&msg));
let idlock = botlock.get_identity(); let idlock = botlock.get_identity();
println!("got identity"); // println!("got identity");
botinstance::botlog::trace("got identity",
Some("identity.rs > init > getroles()".to_string()), Some(&msg));
let idlock = idlock.read().await; // <-- 02.12 - Latest where it gest stuck - before or at this point let idlock = idlock.read().await; // <-- 02.12 - Latest where it gest stuck - before or at this point
println!("id lock"); // println!("id lock");
botinstance::botlog::trace("id lock",
Some("identity.rs > init > getroles()".to_string()), Some(&msg));
let sproles = match targetchnl { let sproles = match targetchnl {
None => { None => {
// let bot = Rc::clone(&bot); // let bot = Rc::clone(&bot);
@ -334,7 +354,9 @@ pub async fn init(mgr:Arc<ModulesManager>)
}; };
println!("Retrieved User Roles >> {:?}",sproles); // println!("Retrieved User Roles >> {:?}",sproles);
botinstance::botlog::debug(&format!("Retrieved User Roles >> {:?}",sproles),
Some("identity.rs > init > getroles()".to_string()), Some(&msg));
// let a = bot.identity.getuserroles(String::from("ModulatingForce"), Some(ChType::Channel(String::from("ModulatingForcebot")))); // let a = bot.identity.getuserroles(String::from("ModulatingForce"), Some(ChType::Channel(String::from("ModulatingForcebot"))));
// println!("{:?}",a); // println!("{:?}",a);
@ -343,7 +365,9 @@ pub async fn init(mgr:Arc<ModulesManager>)
println!("End of Init MOdule add"); // println!("End of Init MOdule add");
botinstance::botlog::trace("End of Init MOdule add",
Some("identity.rs > init ".to_string()), None);
} }
@ -416,7 +440,9 @@ impl IdentityManager {
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); // println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
// [ ] Check what Badges in PrivmsgMessage // [ ] Check what Badges in PrivmsgMessage
println!{"Checking within PRVMSG"}; // println!{"Checking within PRVMSG"};
botinstance::botlog::debug("Checking within PRVMSG",
Some("identity.rs > can_user_run_PRVMSG()".to_string()), Some(&msg));
let mut sender_badge:Option<ChatBadge> = None; let mut sender_badge:Option<ChatBadge> = None;
@ -486,7 +512,9 @@ impl IdentityManager {
// ) -> Result<Permissible,Box<dyn Error>> { // ) -> Result<Permissible,Box<dyn Error>> {
) -> (Permissible,ChangeResult) { ) -> (Permissible,ChangeResult) {
println!{"Checking within can_user_run()"}; // println!{"Checking within can_user_run()"};
botinstance::botlog::debug("Checking within can_user_run()",
Some("identity.rs > can_user_run()".to_string()), None);
/* /*
canUserRun - canUserRun -
@ -557,7 +585,9 @@ impl IdentityManager {
ChatBadge::Mod => { ChatBadge::Mod => {
println!("Mod Chatbadge detected"); // println!("Mod Chatbadge detected");
botinstance::botlog::info("Mod Chatbadge detected",
Some("identity.rs > can_user_run()".to_string()), None);
// println!("debug special roles : {:?}",self.special_roles_users); // println!("debug special roles : {:?}",self.special_roles_users);
// println!("debug usr : {}",&usr.to_lowercase()); // println!("debug usr : {}",&usr.to_lowercase());
@ -565,9 +595,16 @@ impl IdentityManager {
// let Some((k,v)) = self.special_roles_users.get_key_value(usr); // let Some((k,v)) = self.special_roles_users.get_key_value(usr);
// match self.special_roles_users.get_mut(&usr.to_lowercase()) { // match self.special_roles_users.get_mut(&usr.to_lowercase()) {
// match self.special_roles_users.get(&usr.to_lowercase()) { // match self.special_roles_users.get(&usr.to_lowercase()) {
println!("Creating clone"); // println!("Creating clone");
botinstance::botlog::trace("Creating clone",
Some("identity.rs > can_user_run()".to_string()), None);
let roleslock = Arc::clone(&(*self).special_roles_users); let roleslock = Arc::clone(&(*self).special_roles_users);
println!("Read lock on : Special_Roles_User"); // <-- after this is slightly different between working and problem
// println!("Read lock on : Special_Roles_User"); // <-- after this is slightly different between working and problem
botinstance::botlog::trace("Read lock on : Special_Roles_User",
Some("identity.rs > can_user_run()".to_string()), None);
let mut roleslock = roleslock.write().await; let mut roleslock = roleslock.write().await;
match (*roleslock).get(&usr.to_lowercase()) { match (*roleslock).get(&usr.to_lowercase()) {
Some(usrroles) if Some(usrroles) if
@ -577,12 +614,20 @@ impl IdentityManager {
// println!("contains supmod : {}", usrroles.read().await.contains(&UserRole::SupMod(channelname.clone()))); // println!("contains supmod : {}", usrroles.read().await.contains(&UserRole::SupMod(channelname.clone())));
// Do nothing when theh have a mod badge and have either a supmod or mod badge for the channel // Do nothing when theh have a mod badge and have either a supmod or mod badge for the channel
println!("Already a mod in roles"); // println!("Already a mod in roles");
botinstance::botlog::trace("Already a mod in roles",
Some("identity.rs > can_user_run()".to_string()), None);
} }
_ => { _ => {
// In the event they have a mod badge , are running a bot command, but don't have a channel mod role yet... // In the event they have a mod badge , are running a bot command, but don't have a channel mod role yet...
println!("lock created > adding with a mod role o7"); // println!("lock created > adding with a mod role o7");
botinstance::botlog::trace("lock created > adding with a mod role o7",
Some("identity.rs > can_user_run()".to_string()), None);
// botinstance::botlog::notice("Assigning ModRole to Chatter",
// Some("identity.rs > can_user_run()".to_string()), None);
let mut roleslock = roleslock; let mut roleslock = roleslock;
let mut a = roleslock.get_mut(&usr.to_lowercase()).unwrap(); let mut a = roleslock.get_mut(&usr.to_lowercase()).unwrap();
let mut alock = a.write().await; let mut alock = a.write().await;
@ -607,7 +652,9 @@ impl IdentityManager {
// [x] If cmdreqroles includes UserRole::Mod("") , checks if chatter has UserRole::Mod(channelname::ChType) or UserRole::SupMod(channelname::ChType) to determine if Ok(Permissible::Allow) // [x] If cmdreqroles includes UserRole::Mod("") , checks if chatter has UserRole::Mod(channelname::ChType) or UserRole::SupMod(channelname::ChType) to determine if Ok(Permissible::Allow)
println!("cmd required roles : {:?}",cmdreqroles); // println!("cmd required roles : {:?}",cmdreqroles);
botinstance::botlog::trace(&format!("cmd required roles : {:?}",cmdreqroles),
Some("identity.rs > can_user_run()".to_string()), None);
if cmdreqroles.contains(&UserRole::Mod(ChType::Channel(String::new()))) { if cmdreqroles.contains(&UserRole::Mod(ChType::Channel(String::new()))) {
// match self.special_roles_users.get(&channelname) { // match self.special_roles_users.get(&channelname) {
@ -616,13 +663,20 @@ impl IdentityManager {
// } // }
println!("Mod Role required"); // println!("Command requires Mod Role");
botinstance::botlog::trace("Command requires Mod Role",
Some("identity.rs > can_user_run()".to_string()), None);
if let Some(a) = (&*self).special_roles_users.read().await.get(&usr.to_lowercase()) { if let Some(a) = (&*self).special_roles_users.read().await.get(&usr.to_lowercase()) {
println!("Special roles found for user"); // println!("Special roles found for user");
botinstance::botlog::trace("Special roles found for user",
Some("identity.rs > can_user_run()".to_string()), None);
if a.read().await.contains(&UserRole::Mod(channelname.clone())) || a.read().await.contains(&UserRole::SupMod(channelname.clone())){ if a.read().await.contains(&UserRole::Mod(channelname.clone())) || a.read().await.contains(&UserRole::SupMod(channelname.clone())){
// return Ok(Permissible::Allow); // return Ok(Permissible::Allow);
println!("Special roles found for user : A mod idenfified "); // println!("Special roles found for user : A mod idenfified ");
botinstance::botlog::trace("> Special Role Identified : Mod ",
Some("identity.rs > can_user_run()".to_string()), None);
return (Permissible::Allow , modrolechange) return (Permissible::Allow , modrolechange)
} }
} }
@ -644,12 +698,22 @@ impl IdentityManager {
// [x] If cmdreqroles includes UserRole::BotAdmin and chatter has UserRole::BotAdmin , Ok(Permissible::Allow) // [x] If cmdreqroles includes UserRole::BotAdmin and chatter has UserRole::BotAdmin , Ok(Permissible::Allow)
println!("Eval cmdreqroles with botadmin : {}",cmdreqroles.contains(&UserRole::BotAdmin)); // println!("Eval cmdreqroles with botadmin : {}",cmdreqroles.contains(&UserRole::BotAdmin));
botinstance::botlog::trace(&format!("Eval cmdreqroles with botadmin : {}",cmdreqroles.contains(&UserRole::BotAdmin)),
Some("identity.rs > can_user_run()".to_string()), None);
if cmdreqroles.contains(&UserRole::BotAdmin) { if cmdreqroles.contains(&UserRole::BotAdmin) {
println!("special roles get : {:?}",(&*self).special_roles_users.read().await.get(&usr.to_lowercase())); // println!("special roles get : {:?}",(&*self).special_roles_users.read().await.get(&usr.to_lowercase()));
botinstance::botlog::trace(&format!("special roles get : {:?}",(&*self).special_roles_users.read().await.get(&usr.to_lowercase())),
Some("identity.rs > can_user_run()".to_string()), None);
if let Some(a) = (&*self).special_roles_users.read().await.get(&usr.to_lowercase()) { if let Some(a) = (&*self).special_roles_users.read().await.get(&usr.to_lowercase()) {
println!("special roles contains BotAdmin: {}",a.read().await.contains(&UserRole::BotAdmin)); println!("special roles contains BotAdmin: {}",a.read().await.contains(&UserRole::BotAdmin));
botinstance::botlog::trace(&format!("special roles contains BotAdmin: {}",a.read().await.contains(&UserRole::BotAdmin)),
Some("identity.rs > can_user_run()".to_string()), None);
if a.read().await.contains(&UserRole::BotAdmin) { if a.read().await.contains(&UserRole::BotAdmin) {
// return Ok(Permissible::Allow); // return Ok(Permissible::Allow);
return (Permissible::Allow,modrolechange) return (Permissible::Allow,modrolechange)

View file

@ -6,7 +6,7 @@ use std::process::Output;
use crate::core::botinstance::ArcBox; use crate::core::botinstance::ArcBox;
use crate::core::botinstance::BotInstance; use crate::core::botinstance::{self,BotInstance};
use casual_logger::Extension; use casual_logger::Extension;
use tokio::sync::RwLock; use tokio::sync::RwLock;
use std::sync::Arc; use std::sync::Arc;
@ -23,7 +23,8 @@ pub async fn main() {
let bot = BotInstance::init().await; let bot = BotInstance::init().await;
Log::debug("Checking bot actions"); // Log::debug("Checking bot actions");
botinstance::botlog::debug("Checking bot actions", Some("main()".to_string()), None);
let a = Arc::clone(&bot.botmodules.botactions); let a = Arc::clone(&bot.botmodules.botactions);
let a = a.read().await; let a = a.read().await;
// let a = *a; // let a = *a;
@ -33,15 +34,18 @@ pub async fn main() {
match act { match act {
crate::core::botmodules::BotAction::C(b) => { crate::core::botmodules::BotAction::C(b) => {
// println!("bot actiions: {}",b.command) // println!("bot actiions: {}",b.command)
Log::info(&format!("bot actions: {}",b.command)); // Log::info(&format!("bot actions: {}",b.command));
botinstance::botlog::info(&format!("bot actions: {}",b.command), Some("main()".to_string()), None);
}, },
crate::core::botmodules::BotAction::L(l) => { crate::core::botmodules::BotAction::L(l) => {
// println!("bot actiions: {}",l.name) // println!("bot actiions: {}",l.name)
Log::info(&format!("bot actions: {}",l.name)); // Log::info(&format!("bot actions: {}",l.name));
botinstance::botlog::info(&format!("bot actions: {}",l.name), Some("main()".to_string()), None);
}, },
_ => { _ => {
// println!("Not a valid match??") // println!("Not a valid match??")
Log::info("Not a valid match??"); // Log::info("Not a valid match??");
botinstance::botlog::info("Not a valid match??", Some("main()".to_string()), None);
}, },
} }
@ -49,7 +53,9 @@ pub async fn main() {
}; };
// println!("Starting runner.."); // println!("Starting runner..");
Log::notice("Starting Bot Runner"); // Log::notice("Starting Bot Runner");
botinstance::botlog::notice("Starting Bot Runner", Some("main()".to_string()), None);
println!("Starting Bot Runner");
Log::flush(); Log::flush();
@ -57,6 +63,8 @@ pub async fn main() {
// println!("ERROR : EXIT Game loop"); // println!("ERROR : EXIT Game loop");
// let msg = Log::fatal("ERROR : EXIT Game loop"); // let msg = Log::fatal("ERROR : EXIT Game loop");
panic!("{}",Log::fatal("ERROR : EXIT Game loop")); // panic!("{}",Log::fatal("ERROR : EXIT Game loop"));
let a = botinstance::botlog::fatal("ERROR : EXIT Game loop", Some("main()".to_string()), None);
panic!("{}",a);
} }

View file

@ -79,7 +79,13 @@ pub async fn init(mgr:Arc<ModulesManager>)
async fn good_girl(mut bot:BotAR,msg:PrivmsgMessage) async fn good_girl(mut bot:BotAR,msg:PrivmsgMessage)
{ {
println!("In GoodGirl() Listener"); // println!("In GoodGirl() Listener");
// Change below from debug to trace if required later
botinstance::botlog::debug("In GoodGirl() Listener",
Some("experiments > goodgirl()".to_string()) ,
Some(&msg));
//println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text); //println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
// [ ] Uses gen_ratio() to output bool based on a ratio probability . // [ ] Uses gen_ratio() to output bool based on a ratio probability .
@ -91,10 +97,16 @@ async fn good_girl(mut bot:BotAR,msg:PrivmsgMessage)
{ {
// chat.say_in_reply_to(&msg,String::from("GoodGirl")).await; // chat.say_in_reply_to(&msg,String::from("GoodGirl")).await;
//if rng.gen_ratio(1,5) { //if rng.gen_ratio(1,5) {
println!("In GoodGirl() > Pausechamp"); // println!("In GoodGirl() > Pausechamp");
botinstance::botlog::debug("In GoodGirl() > Pausechamp",
Some("experiments > goodgirl()".to_string()) ,
Some(&msg));
let rollwin = rand::thread_rng().gen_ratio(1,8); let rollwin = rand::thread_rng().gen_ratio(1,8);
if rollwin { if rollwin {
println!("In GoodGirl() > Win"); // println!("In GoodGirl() > Win");
botinstance::botlog::debug("In GoodGirl() > Win",
Some("experiments > goodgirl()".to_string()) ,
Some(&msg));
let a = Arc::clone(&bot); let a = Arc::clone(&bot);
let botlock = a.read().await; let botlock = a.read().await;
botlock.botmgrs.chat.say_in_reply_to(&msg, String::from("GoodGirl xdd ")).await; botlock.botmgrs.chat.say_in_reply_to(&msg, String::from("GoodGirl xdd ")).await;
@ -106,8 +118,11 @@ async fn good_girl(mut bot:BotAR,msg:PrivmsgMessage)
} }
async fn testy(mut _chat:BotAR,_msg:PrivmsgMessage) async fn testy(mut _chat:BotAR,msg:PrivmsgMessage)
{ {
println!("testy triggered!") println!("testy triggered!"); // NOTE : This test function intends to print (e.g., to stdout) at fn call
botinstance::botlog::debug("testy triggered!",
Some("experiments > testy()".to_string()) ,
Some(&msg));
} }