From 6867cc7af8aee0d82baa24f1302a29005f92546a Mon Sep 17 00:00:00 2001 From: ModulatingForce <116608425+modulatingforce@users.noreply.github.com> Date: Wed, 3 Apr 2024 18:33:15 -0400 Subject: [PATCH] adj sayinreply to use channel & msgid --- src/core/chat.rs | 52 +++++++++++++++++------- src/custom/experimental/experiment001.rs | 16 +++++--- src/custom/experimental/experiment002.rs | 4 +- 3 files changed, 51 insertions(+), 21 deletions(-) diff --git a/src/core/chat.rs b/src/core/chat.rs index a3db701..003c617 100644 --- a/src/core/chat.rs +++ b/src/core/chat.rs @@ -41,7 +41,8 @@ pub enum BotMsgType { // SayInReplyTo(&'a PrivmsgMessage,String), // SayInReplyTo(Arc>,String), // SayInReplyTo(&'a dyn ReplyToMessage,String), // [ ] 04.03 - Having issues defining it this way? - SayInReplyTo((String,String),String), // ( Destination Channel , Message ID to reply to ) , OutMessage // https://docs.rs/twitch-irc/latest/twitch_irc/client/struct.TwitchIRCClient.html#method.say_in_reply_to + // SayInReplyTo((String,String),String), // ( Destination Channel , Message ID to reply to ) , OutMessage // https://docs.rs/twitch-irc/latest/twitch_irc/client/struct.TwitchIRCClient.html#method.say_in_reply_to + SayInReplyTo(Channel,String,String), // ( Destination Channel , Message ID to reply to , OutMessage ) // https://docs.rs/twitch-irc/latest/twitch_irc/client/struct.TwitchIRCClient.html#method.say_in_reply_to Say(String,String), Notif(String), // For Bot Sent Notifications } @@ -88,10 +89,11 @@ impl Chat { */ let (channel_login,mut outmsg) = match msginput.clone() { - BotMsgType::SayInReplyTo(msg, outmsg) => { + // BotMsgType::SayInReplyTo(msg, outmsg) => { + BotMsgType::SayInReplyTo(chnl, _, outmsg) => { // (msg.channel_login.clone(),outmsg) // (msg.clone().channel_login().to_string(),outmsg) - (msg.0, // Desintation Channel + (chnl.0.to_lowercase(), // Desintation Channel outmsg) }, BotMsgType::Say(a,b ) => { @@ -123,13 +125,16 @@ impl Chat { ).await; if !params.bot.read().await.bot_channels.contains(&Channel(channel_login.clone())) { + + dbg!("ISSUE : NONJOINED CHANNEL",¶ms.bot.read().await.bot_channels,Channel(channel_login.clone())); botlog::warn( &format!("A message attempted to send for a Non-Joined Channel : {}",channel_login.clone()), Some("Chat > send_botmsg".to_string()), None, ); - if let BotMsgType::SayInReplyTo(_prvmsg,_outmsg) = msginput { + // if let BotMsgType::SayInReplyTo(_prvmsg,_outmsg) = msginput { + if let BotMsgType::SayInReplyTo(_chnl,_msgid, _outmsg) = msginput { self.send_botmsg(BotMsgType::Notif( "uuh Bot can't send to a channel it isn't joined".to_string(), @@ -177,7 +182,8 @@ impl Chat { match msginput { BotMsgType::Notif(_) => (), // Do nothing with Notif > We'll validate the user later to handle - BotMsgType::SayInReplyTo(_, _) | BotMsgType::Say(_,_) => { + // BotMsgType::SayInReplyTo(_, _) | BotMsgType::Say(_,_) => { + BotMsgType::SayInReplyTo(_, _, _) | BotMsgType::Say(_,_) => { botlog::trace( "BEFORE potential Async recursion", @@ -276,7 +282,8 @@ impl Chat { return; } }, - BotMsgType::SayInReplyTo(_,_ ) | BotMsgType::Say(_,_) => { + // BotMsgType::SayInReplyTo(_,_ ) | BotMsgType::Say(_,_) => { + 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( @@ -349,18 +356,25 @@ impl Chat { } match msginput.clone() { - BotMsgType::SayInReplyTo(msg, _) => { + // BotMsgType::SayInReplyTo(msg, _) => { + // BotMsgType::SayInReplyTo(msg, _, _) => { + BotMsgType::SayInReplyTo(chnl,msgid, _) => { + + // dbg!(msg.clone().channel_login(),msg.message_id(),outmsg.clone()); + dbg!(chnl.clone(),msgid.clone(),outmsg.clone()); - dbg!(msg.clone().channel_login(),msg.message_id(),outmsg.clone()); self.client.say_in_reply_to(&( - msg.clone().channel_login().to_string(), - msg.message_id().to_string()), + chnl.0, + msgid), outmsg).await.unwrap(); }, BotMsgType::Say(a, _) => { self.client.say(a, outmsg).await.unwrap(); } BotMsgType::Notif(outmsg) => { + + // dbg!(chnl.clone(),msgid.clone(),outmsg.clone()); + dbg!(params.msg.channel_login(),params.msg.message_id()); self.client.say_in_reply_to(¶ms.msg, outmsg).await.unwrap(); } } @@ -372,7 +386,8 @@ impl Chat { channel_login.clone(), "rate limit counter increase", contextratelimiter ); - if let BotMsgType::SayInReplyTo(_,_ ) = msginput { + // if let BotMsgType::SayInReplyTo(_,_ ) = msginput { + if let BotMsgType::SayInReplyTo(_,_,_ ) = msginput { botlog::trace( logstr.as_str(), Some("Chat > send_botmsg".to_string()), @@ -408,7 +423,14 @@ impl Chat { // #[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) { - pub async fn say_in_reply_to(&self, msg: &impl ReplyToMessage, outmsg: String , params : ExecBodyParams) { + // pub async fn say_in_reply_to(&self, msg: &impl ReplyToMessage, outmsg: String , params : ExecBodyParams) { + pub async fn say_in_reply_to( + &self, + destination_channel : Channel , + reply_message_id : String , + outmsg: String , + params : ExecBodyParams) + { // let params_clone = params.clone(); @@ -462,9 +484,9 @@ impl Chat { self.send_botmsg(BotMsgType::SayInReplyTo( - (msg.channel_login().to_string(), - msg.message_id().to_string()), - outmsg) , params).await; + destination_channel, + reply_message_id, + outmsg) , params).await; } diff --git a/src/custom/experimental/experiment001.rs b/src/custom/experimental/experiment001.rs index 65bae8b..e774055 100644 --- a/src/custom/experimental/experiment001.rs +++ b/src/custom/experimental/experiment001.rs @@ -15,6 +15,7 @@ const OF_CMD_CHANNEL:Channel = Channel(String::new()); use rand::Rng; +use twitch_irc::message::ReplyToMessage; use std::sync::Arc; use crate::core::bot_actions::ExecBodyParams; @@ -140,7 +141,8 @@ async fn rp(params : ExecBodyParams) .chat .say_in_reply_to( //using the tuple as param to the message being replied - &answear, + Channel(answear.0), + answear.1, String::from("hey there"), params.clone() ).await; @@ -188,7 +190,8 @@ async fn good_girl(params : ExecBodyParams) { .botmgrs .chat .say_in_reply_to( - ¶ms.msg, + Channel(params.clone().msg.channel_login().to_string()), + params.clone().msg.message_id().to_string(), String::from("GoodGirl xdd "), params.clone() ).await; @@ -228,7 +231,8 @@ async fn babygirl(params : ExecBodyParams) { .botmgrs .chat .say_in_reply_to( - ¶ms.msg, + Channel(params.clone().msg.channel_login().to_string()), + params.clone().msg.message_id().to_string(), String::from("16:13 notohh: cafdk"), params.clone() ).await; @@ -240,7 +244,8 @@ async fn babygirl(params : ExecBodyParams) { .botmgrs .chat .say_in_reply_to( - ¶ms.msg, + Channel(params.clone().msg.channel_login().to_string()), + params.clone().msg.message_id().to_string(), String::from("16:13 notohh: have fun eating princess"), params.clone() ).await; @@ -252,7 +257,8 @@ async fn babygirl(params : ExecBodyParams) { .botmgrs .chat .say_in_reply_to( - ¶ms.msg, + Channel(params.clone().msg.channel_login().to_string()), + params.clone().msg.message_id().to_string(), String::from("16:13 notohh: baby girl"), params.clone() ).await; diff --git a/src/custom/experimental/experiment002.rs b/src/custom/experimental/experiment002.rs index a4ecb25..a7d1610 100644 --- a/src/custom/experimental/experiment002.rs +++ b/src/custom/experimental/experiment002.rs @@ -17,6 +17,7 @@ const OF_CMD_CHANNEL:Channel = Channel(String::new()); use std::sync::Arc; use chrono::{TimeZone,Local}; +use twitch_irc::message::ReplyToMessage; use crate::core::bot_actions::ExecBodyParams; @@ -180,7 +181,8 @@ async fn sayout(params : ExecBodyParams) { .botmgrs .chat .say_in_reply_to( - ¶ms.msg, + Channel(params.clone().msg.channel_login().to_string()), + params.clone().msg.message_id().to_string(), String::from("Invalid arguments"), params.clone() ).await;