diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..2bcdad5 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,4 @@ + +[env] +# Based on https://doc.rust-lang.org/cargo/reference/config.html +OtherBots = "Supibot,buttsbot,PotatBotat,StreamElements" diff --git a/Cargo.toml b/Cargo.toml index 5b20c49..87f8cfa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,8 @@ futures = "0.3" async-trait = "0.1.77" casual_logger = "0.6.5" - [lib] name = "bot_lib" -path = "src/lib.rs" \ No newline at end of file +path = "src/lib.rs" + + diff --git a/README.md b/README.md index c736061..3b200de 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,11 @@ login_name = access_token = bot_channels = , prefix = +``` + + +2. If required, adjust the following additional `.cargo\config.toml` configurations : +``` +[env] +OtherBots = # Other Bots for special handling (e.g., bot commands cant be ran by bots) ``` \ No newline at end of file diff --git a/src/core/identity.rs b/src/core/identity.rs index 877fb6c..5cdfd5f 100644 --- a/src/core/identity.rs +++ b/src/core/identity.rs @@ -12,11 +12,40 @@ use crate::core::botinstance::ChType; use crate::core::botlog; use crate::core::botmodules::{BotActionTrait, BotCommand, BotModule, ModulesManager}; +use dotenv::dotenv; +use std::env; + fn adminvector() -> Vec { vec![String::from("ModulatingForce")] //vec![] } + +pub fn otherbots_vector() -> Vec { + // vec![String::from("ModulatingForce")] + // //vec![] + + dotenv().ok(); + let mut other_bots = Vec::new(); + + if let Ok(value) = env::var("OtherBots") { + for bot in value.split(',') { + other_bots.push(String::from(bot).to_lowercase()) + } + } + + botlog::debug( + &format!( + "OtherBots : {:?}",other_bots, + ), + Some("identity.rs > otherbots_vector()".to_string()), + None, + ); + + other_bots +} + + pub async fn init(mgr: Arc) { botlog::trace( "Went into Identity Module init", @@ -780,6 +809,24 @@ impl IdentityManager { let usr = usr.to_lowercase(); + + let bot_vector = otherbots_vector() ; // result of pulling from Cargo.toml + + botlog::trace( + &format!( + "Checking user is part of known bots: bot_vector.contains(&usr) : {:?}",bot_vector.contains(&usr) + ), + Some("identity.rs > can_user_run()".to_string()), + None, + ); + + if bot_vector.contains(&usr) { + return ( + Permissible::Block, + ChangeResult::NoChange("Other Bots Cannot Run Commands".to_string()), + ); + } + // if cmdreqroles.len() == 0 { if cmdreqroles.is_empty() { // return Ok(Permissible::Allow)