dev into main #15

Merged
modulatingforce merged 40 commits from dev into main 2024-02-25 11:31:11 -05:00
2 changed files with 26 additions and 11 deletions
Showing only changes of commit be2e967e40 - Show all commits

View file

@ -154,6 +154,9 @@ impl BotManagers {
identity : IdentityManager::init(),
chat : Chat::init(ratelimiters,client),
}
}
}
@ -249,7 +252,7 @@ impl BotInstance
let join_handle = tokio::spawn(async move {
while let Some(message) = self.incoming_messages.recv().await {
while let Some(message) = &self.incoming_messages.recv().await {
// Below can be used to debug if I want to capture all messages
// println!("Received message: {:?}", message);
@ -258,7 +261,7 @@ impl BotInstance
// if let Some(chnl) = msg.channel_login {
// println!("NOTICE : (#{}) {}", chnl, msg.message_text);
// }
match msg.channel_login {
match &msg.channel_login {
Some(chnl) => println!("NOTICE : (#{}) {}", chnl, msg.message_text),
None => println!("NOTICE : {}", msg.message_text),
}
@ -269,7 +272,7 @@ impl BotInstance
println!("Privmsg section");
// b.listener_main_prvmsg(&msg);
self.listener_main_prvmsg(msg).await;
self.listener_main_prvmsg(&msg).await;
// - BotCommand listener should likely need to be called within the above
@ -301,7 +304,7 @@ impl BotInstance
// async fn listener_main_prvmsg(&mut self,msg:PrivmsgMessage) -> () {
async fn listener_main_prvmsg(&self,msg:PrivmsgMessage) -> () {
async fn listener_main_prvmsg(self,msg:&PrivmsgMessage) -> () {
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
@ -351,7 +354,9 @@ impl BotInstance
// _ => (),
// }
match self.botmgrs.identity.to_owned().can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
// match self.botmgrs.identity.to_owned().can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
// match self.botmgrs.identity.can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
match self.botmgrs.identity.can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
// Ok(Permissible::Allow) => (),
Permissible::Allow => {
println!("Executed as permissible");

View file

@ -101,9 +101,11 @@ pub enum Permissible {
Block
}
#[derive(Clone)]
//#[derive(Clone)]
pub struct IdentityManager {
special_roles_users : HashMap<String,Vec<UserRole>>, // # <-- (!) This must be String instead of ChType because we're checking a User not a Channel
// parent_mgr : Box<crate::core::botinstance::BotManagers>,
parent_mgr : Option<Box<crate::core::botinstance::BotManagers>>,
}
pub enum ChatBadge {
@ -122,13 +124,14 @@ impl IdentityManager {
IdentityManager {
special_roles_users : a,
parent_mgr : None,
}
}
// [ ] Maybe I should create a can_user_run version that simply takes PrvMsg, but then calls can_user_run directly
// pub fn can_user_run_PRVMSG(self,msg:&PrivmsgMessage,cmdreqroles:Vec<UserRole>) -> Result<Permissible,Box<dyn Error>>
pub fn can_user_run_PRVMSG(self,msg:&PrivmsgMessage,cmdreqroles:Vec<UserRole>) -> Permissible
pub fn can_user_run_PRVMSG(self,msg:&PrivmsgMessage,cmdreqroles:Vec<UserRole>) -> &Permissible
{
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
@ -149,7 +152,7 @@ impl IdentityManager {
// }
if let Some(sender_badge) = sender_badge {
return self.can_user_run(msg.sender.name.to_owned(),
return &self.can_user_run(msg.sender.name.to_owned(),
ChType::Channel(msg.channel_login.to_owned()),
sender_badge,
cmdreqroles
@ -159,7 +162,7 @@ impl IdentityManager {
// [ ] Call can_user_run()
Permissible::Block
&Permissible::Block
}
pub fn can_user_run(mut self,
@ -241,7 +244,8 @@ impl IdentityManager {
// println!("debug usr : {}",&usr.to_lowercase());
// 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()) {
Some(usrroles) => {
// println!("contains mod : {}", usrroles.contains(&UserRole::Mod(channelname.clone())));
// println!("contains supmod : {}", usrroles.contains(&UserRole::SupMod(channelname.clone())));
@ -250,7 +254,13 @@ impl IdentityManager {
// Do nothing - this is expected
} else {
// in this case, they have a ChatBadge::Mod but should have this for the channel
usrroles.push(UserRole::Mod(channelname.clone()));
// let mut a = usrroles;
// usrroles.push(UserRole::Mod(channelname.clone()));
// a.push(UserRole::Mod(channelname.clone()));
self.special_roles_users
.get_mut(&usr.to_lowercase())
.expect("ERROR")
.push(UserRole::Mod(channelname.clone()));
// println!("debug special roles : {:?}",self.special_roles_users);
}
},