This commit is contained in:
parent
246c3d98e6
commit
10d25bf34f
1 changed files with 85 additions and 40 deletions
125
src/core/chat.rs
125
src/core/chat.rs
|
@ -40,6 +40,7 @@ pub struct Chat {
|
||||||
enum BotMsgType<'a> {
|
enum BotMsgType<'a> {
|
||||||
SayInReplyTo(&'a PrivmsgMessage,String),
|
SayInReplyTo(&'a PrivmsgMessage,String),
|
||||||
Say(String,String),
|
Say(String,String),
|
||||||
|
Notif(String), // For Bot Sent Notifications
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +64,9 @@ impl Chat {
|
||||||
|
|
||||||
|
|
||||||
// async fn send_botmsg(&self, msginput: BotMsgType<'_>) {
|
// async fn send_botmsg(&self, msginput: BotMsgType<'_>) {
|
||||||
async fn send_botmsg(&self, msginput: BotMsgType<'_>, params : ExecBodyParams) {
|
#[async_recursion]
|
||||||
|
// async fn send_botmsg(&self, msginput: BotMsgType<'_>, params : ExecBodyParams) {
|
||||||
|
async fn send_botmsg(&self, msginput: BotMsgType<'async_recursion>, params : ExecBodyParams) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,6 +94,10 @@ impl Chat {
|
||||||
BotMsgType::Say(a,b ) => {
|
BotMsgType::Say(a,b ) => {
|
||||||
(a.clone(),b.clone())
|
(a.clone(),b.clone())
|
||||||
},
|
},
|
||||||
|
BotMsgType::Notif(outmsg) => {
|
||||||
|
// (msg.channel_login.clone(),outmsg)
|
||||||
|
(params.msg.channel_login.clone(),outmsg)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -156,15 +163,20 @@ impl Chat {
|
||||||
// "uuh Bot can't send to a channel it isn't joined".to_string(),
|
// "uuh Bot can't send to a channel it isn't joined".to_string(),
|
||||||
// params.clone()
|
// params.clone()
|
||||||
// ).await;
|
// ).await;
|
||||||
if let BotMsgType::SayInReplyTo(a,_) = msginput {
|
if let BotMsgType::SayInReplyTo(_prvmsg,_outmsg) = msginput {
|
||||||
|
|
||||||
self.say_in_reply_to(
|
// self.say_in_reply_to(
|
||||||
a,
|
// a,
|
||||||
|
// "uuh Bot can't send to a channel it isn't joined".to_string(),
|
||||||
|
// params.clone()
|
||||||
|
// ).await;
|
||||||
|
self.send_botmsg(BotMsgType::Notif(
|
||||||
"uuh Bot can't send to a channel it isn't joined".to_string(),
|
"uuh Bot can't send to a channel it isn't joined".to_string(),
|
||||||
params.clone()
|
),
|
||||||
).await;
|
params).await;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -209,43 +221,42 @@ impl Chat {
|
||||||
|
|
||||||
Log::flush();
|
Log::flush();
|
||||||
|
|
||||||
|
match msginput {
|
||||||
|
BotMsgType::Notif(_) => (), // Do nothing with Notif > We'll validate the user later to handle
|
||||||
|
BotMsgType::SayInReplyTo(_, _) | BotMsgType::Say(_,_) => {
|
||||||
|
|
||||||
|
botlog::trace(
|
||||||
|
"BEFORE potential Async recursion",
|
||||||
|
Some("chat.rs > send_botmsg ".to_string()),
|
||||||
|
Some(¶ms.clone().msg),
|
||||||
|
);
|
||||||
|
|
||||||
|
Log::flush();
|
||||||
|
|
||||||
if let BotMsgType::SayInReplyTo(a, _) = msginput {
|
|
||||||
|
|
||||||
botlog::trace(
|
self.send_botmsg(BotMsgType::Notif(
|
||||||
"BEFORE potential Async recursion",
|
format!("uuh {:?} is disabled on {} : {:?}",
|
||||||
|
parent_module.clone().unwrap(),
|
||||||
|
channel_login.clone(),
|
||||||
|
lvl
|
||||||
|
),
|
||||||
|
), params.clone()
|
||||||
|
).await;
|
||||||
|
|
||||||
|
|
||||||
|
botlog::trace(
|
||||||
|
"AFTER potential Async recursion",
|
||||||
Some("chat.rs > send_botmsg ".to_string()),
|
Some("chat.rs > send_botmsg ".to_string()),
|
||||||
Some(¶ms.clone().msg),
|
Some(¶ms.msg),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Log::flush();
|
||||||
|
|
||||||
|
return
|
||||||
|
},
|
||||||
|
|
||||||
Log::flush();
|
|
||||||
|
|
||||||
|
|
||||||
self.say_in_reply_to(
|
|
||||||
a,
|
|
||||||
format!("uuh {:?} is disabled on {} : {:?}",
|
|
||||||
parent_module.clone().unwrap(),
|
|
||||||
channel_login.clone(),
|
|
||||||
lvl
|
|
||||||
),
|
|
||||||
params.clone()
|
|
||||||
).await;
|
|
||||||
|
|
||||||
|
|
||||||
botlog::trace(
|
|
||||||
"AFTER potential Async recursion",
|
|
||||||
Some("chat.rs > send_botmsg ".to_string()),
|
|
||||||
Some(¶ms.msg),
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
Log::flush();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,10 +326,41 @@ impl Chat {
|
||||||
// params.clone()
|
// params.clone()
|
||||||
// ).await;
|
// ).await;
|
||||||
|
|
||||||
return;
|
match msginput {
|
||||||
|
BotMsgType::Notif(_) => {
|
||||||
|
// If the BotMsg is an Error Notification , and the Sender does not have Specific Roles in the Source Channel Sent (where the Error Notif will be sent)
|
||||||
|
return // return in this case - the User should not see a notification if this path is reached
|
||||||
|
},
|
||||||
|
BotMsgType::SayInReplyTo(_,_ ) | BotMsgType::Say(_,_) => {
|
||||||
|
// If the BotMsg a Say/SayInReplyTo (from Developer or Chatter) , and the Sender does not have Specific Roles in the Source Channel Sent
|
||||||
|
|
||||||
|
self.send_botmsg(BotMsgType::Notif(
|
||||||
|
format!("uuh You do not have the right roles to send to {}",
|
||||||
|
channel_login.clone(),
|
||||||
|
),
|
||||||
|
), params.clone()
|
||||||
|
).await;
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
At this stage from the above Validations :
|
||||||
|
msginput would be :
|
||||||
|
a. BotMsgType::SayInReplyTo | BotMsgType::Say that is
|
||||||
|
- Towards a Destination Channel that the Sender has Elevated User Roles to Send to
|
||||||
|
b. BotMsgType::Notif that is
|
||||||
|
- Going to be sent to the Source Channel (rather than the original say/sayinreplyto was towards)
|
||||||
|
- A Sender that has Elevated User Roles in Source Channel will see a message ; otherwise, they will not
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
Use the following
|
Use the following
|
||||||
|
@ -499,6 +541,9 @@ impl Chat {
|
||||||
BotMsgType::Say(a, _) => {
|
BotMsgType::Say(a, _) => {
|
||||||
self.client.say(a, outmsg).await.unwrap();
|
self.client.say(a, outmsg).await.unwrap();
|
||||||
}
|
}
|
||||||
|
BotMsgType::Notif(outmsg) => {
|
||||||
|
self.client.say_in_reply_to(¶ms.msg, outmsg).await.unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contextratelimiter.increment_counter();
|
contextratelimiter.increment_counter();
|
||||||
|
@ -540,7 +585,7 @@ impl Chat {
|
||||||
|
|
||||||
|
|
||||||
// pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String) {
|
// pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String) {
|
||||||
#[async_recursion]
|
// #[async_recursion]
|
||||||
pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String , params : ExecBodyParams) {
|
pub async fn say_in_reply_to(&self, msg: &PrivmsgMessage, outmsg: String , params : ExecBodyParams) {
|
||||||
|
|
||||||
// let params_clone = params.clone();
|
// let params_clone = params.clone();
|
||||||
|
|
Loading…
Reference in a new issue