Working - BotManagers Added
This commit is contained in:
parent
16575245b0
commit
2af424f437
4 changed files with 36 additions and 28 deletions
|
@ -137,9 +137,9 @@ impl Chat {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct BotManagers {
|
pub struct BotManagers {
|
||||||
pub botmodules : ModulesManager,
|
// pub botmodules : ModulesManager,
|
||||||
pub identity : IdentityManager,
|
pub identity : IdentityManager,
|
||||||
pub chat : Chat,
|
pub chat : Chat,
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ impl BotManagers {
|
||||||
client:TwitchIRCClient<TCPTransport<TLS>, StaticLoginCredentials>)
|
client:TwitchIRCClient<TCPTransport<TLS>, StaticLoginCredentials>)
|
||||||
-> BotManagers {
|
-> BotManagers {
|
||||||
BotManagers {
|
BotManagers {
|
||||||
botmodules : ModulesManager::init(),
|
// botmodules : ModulesManager::init(),
|
||||||
identity : IdentityManager::init(),
|
identity : IdentityManager::init(),
|
||||||
chat : Chat::init(ratelimiters,client),
|
chat : Chat::init(ratelimiters,client),
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ pub struct BotInstance
|
||||||
bot_channel : ChType,
|
bot_channel : ChType,
|
||||||
pub incoming_messages : UnboundedReceiver<ServerMessage>,
|
pub incoming_messages : UnboundedReceiver<ServerMessage>,
|
||||||
// pub chat : Chat,
|
// pub chat : Chat,
|
||||||
// pub botmodules : ModulesManager,
|
pub botmodules : ModulesManager,
|
||||||
twitch_oauth : String,
|
twitch_oauth : String,
|
||||||
pub bot_channels : Vec<ChType>,
|
pub bot_channels : Vec<ChType>,
|
||||||
// pub identity : IdentityManager,
|
// pub identity : IdentityManager,
|
||||||
|
@ -234,7 +234,7 @@ impl BotInstance
|
||||||
// ratelimiters : ratelimiters,
|
// ratelimiters : ratelimiters,
|
||||||
// client : client,
|
// client : client,
|
||||||
// } ,
|
// } ,
|
||||||
// botmodules : ModulesManager::init(),
|
botmodules : ModulesManager::init(),
|
||||||
twitch_oauth : oauth_token,
|
twitch_oauth : oauth_token,
|
||||||
bot_channels : botchannels,
|
bot_channels : botchannels,
|
||||||
// identity : IdentityManager::init(),
|
// identity : IdentityManager::init(),
|
||||||
|
@ -304,13 +304,13 @@ impl BotInstance
|
||||||
|
|
||||||
|
|
||||||
// async fn listener_main_prvmsg(&mut self,msg:PrivmsgMessage) -> () {
|
// 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);
|
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
|
||||||
|
|
||||||
// // [ ] Need to run through all Listener Bodies for Enabled Modules for the context of the message (e.g., ModStatus is Enabled in the context for the channel)
|
// // [ ] Need to run through all Listener Bodies for Enabled Modules for the context of the message (e.g., ModStatus is Enabled in the context for the channel)
|
||||||
|
|
||||||
for (_m,acts) in &self.botmgrs.botmodules.botactions {
|
for (_m,acts) in &self.botmodules.botactions {
|
||||||
for a in acts {
|
for a in acts {
|
||||||
|
|
||||||
match a {
|
match a {
|
||||||
|
@ -356,11 +356,11 @@ 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()) {
|
||||||
match self.botmgrs.identity.can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
|
match self.botmgrs.identity.clone().can_user_run_PRVMSG(&msg, c.required_roles.clone()) {
|
||||||
// Ok(Permissible::Allow) => (),
|
// Ok(Permissible::Allow) => (),
|
||||||
Permissible::Allow => {
|
Permissible::Allow => {
|
||||||
println!("Executed as permissible");
|
println!("Executed as permissible");
|
||||||
c.execute(self.botmgrs.chat.clone(), msg.clone()).await;
|
c.execute(self.botmgrs.clone(), msg.clone()).await;
|
||||||
}
|
}
|
||||||
Permissible::Block => println!("User Not allowed to run command"),
|
Permissible::Block => println!("User Not allowed to run command"),
|
||||||
// _ => (),
|
// _ => (),
|
||||||
|
@ -370,7 +370,7 @@ impl BotInstance
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
crate::core::botmodules::BotAction::L(l) => l.execute(self.botmgrs.chat.clone(), msg.clone()).await,
|
crate::core::botmodules::BotAction::L(l) => l.execute(self.botmgrs.clone(), msg.clone()).await,
|
||||||
|
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ pub enum BotAction
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BotAction {
|
impl BotAction {
|
||||||
pub async fn execute(&self,m:botinstance::Chat,n:PrivmsgMessage){
|
pub async fn execute(&self,m:botinstance::BotManagers,n:PrivmsgMessage){
|
||||||
|
|
||||||
match self {
|
match self {
|
||||||
BotAction::L(a) => a.execute(m,n).await,
|
BotAction::L(a) => a.execute(m,n).await,
|
||||||
|
@ -96,7 +96,7 @@ pub struct BotCommand {
|
||||||
|
|
||||||
impl BotCommand
|
impl BotCommand
|
||||||
{
|
{
|
||||||
pub async fn execute(&self,m:botinstance::Chat,n:PrivmsgMessage){
|
pub async fn execute(&self,m:botinstance::BotManagers,n:PrivmsgMessage){
|
||||||
(self.exec_body)(m,n).await;
|
(self.exec_body)(m,n).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ impl BotCommand
|
||||||
impl BotActionTrait for BotCommand
|
impl BotActionTrait for BotCommand
|
||||||
{
|
{
|
||||||
fn add_to_bot(self, mut bot:BotInstance) {
|
fn add_to_bot(self, mut bot:BotInstance) {
|
||||||
let mgr = &mut bot.botmgrs.botmodules;
|
let mgr = &mut bot.botmodules;
|
||||||
self.add_to_modmgr(mgr);
|
self.add_to_modmgr(mgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,14 +125,16 @@ pub mod bot_actions {
|
||||||
use std::boxed::Box;
|
use std::boxed::Box;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
|
|
||||||
use crate::core::botinstance::Chat;
|
use crate::core::botinstance::{BotManagers, Chat};
|
||||||
use twitch_irc::message::PrivmsgMessage;
|
use twitch_irc::message::PrivmsgMessage;
|
||||||
|
|
||||||
pub type ExecBody = Box<dyn Fn(Chat,PrivmsgMessage) -> Pin<Box<dyn Future<Output=()> + Send>> + Send + Sync>;
|
// pub type ExecBody = Box<dyn Fn(Chat,PrivmsgMessage) -> Pin<Box<dyn Future<Output=()> + Send>> + Send + Sync>;
|
||||||
//pub type ExecBody<F> = Box<dyn Fn(Chat,PrivmsgMessage) -> Pin<Box<dyn Future<Output=F> + Send>> + Send + Sync>;
|
//pub type ExecBody<F> = Box<dyn Fn(Chat,PrivmsgMessage) -> Pin<Box<dyn Future<Output=F> + Send>> + Send + Sync>;
|
||||||
|
pub type ExecBody = Box<dyn Fn(BotManagers,PrivmsgMessage) -> Pin<Box<dyn Future<Output=()> + Send>> + Send + Sync>;
|
||||||
|
|
||||||
//pub fn asyncbox<T,F>(f: fn(Chat,PrivmsgMessage) -> T) -> ExecBody<F>
|
//pub fn asyncbox<T,F>(f: fn(Chat,PrivmsgMessage) -> T) -> ExecBody<F>
|
||||||
pub fn asyncbox<T>(f: fn(Chat,PrivmsgMessage) -> T) -> ExecBody
|
// pub fn asyncbox<T>(f: fn(Chat,PrivmsgMessage) -> T) -> ExecBody
|
||||||
|
pub fn asyncbox<T>(f: fn(BotManagers,PrivmsgMessage) -> T) -> ExecBody
|
||||||
where
|
where
|
||||||
T: Future<Output=()> + Send + 'static,
|
T: Future<Output=()> + Send + 'static,
|
||||||
{
|
{
|
||||||
|
@ -155,7 +157,7 @@ pub struct Listener
|
||||||
|
|
||||||
impl Listener
|
impl Listener
|
||||||
{
|
{
|
||||||
pub async fn execute(&self,m:botinstance::Chat,n:PrivmsgMessage){
|
pub async fn execute(&self,m:botinstance::BotManagers,n:PrivmsgMessage){
|
||||||
(self.exec_body)(m,n).await;
|
(self.exec_body)(m,n).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,7 +166,7 @@ impl BotActionTrait for Listener
|
||||||
{
|
{
|
||||||
fn add_to_bot(self, mut bot:BotInstance) {
|
fn add_to_bot(self, mut bot:BotInstance) {
|
||||||
|
|
||||||
let mgr = &mut bot.botmgrs.botmodules;
|
let mgr = &mut bot.botmodules;
|
||||||
|
|
||||||
self.add_to_modmgr(mgr);
|
self.add_to_modmgr(mgr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ pub fn init(mgr:&mut ModulesManager)
|
||||||
],
|
],
|
||||||
}.add_to_modmgr(mgr);
|
}.add_to_modmgr(mgr);
|
||||||
|
|
||||||
async fn cmd_promote(mut _chat:botinstance::Chat,_msg:PrivmsgMessage) {
|
async fn cmd_promote(mut _chat:botinstance::BotManagers,_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");
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ pub fn init(mgr:&mut ModulesManager)
|
||||||
}.add_to_modmgr(mgr);
|
}.add_to_modmgr(mgr);
|
||||||
|
|
||||||
|
|
||||||
async fn cmd_demote(mut _chat:botinstance::Chat,_msg:PrivmsgMessage) {
|
async fn cmd_demote(mut _chat:botinstance::BotManagers,_msg:PrivmsgMessage) {
|
||||||
println!("Called cmd demote");
|
println!("Called cmd demote");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ pub enum Permissible {
|
||||||
Block
|
Block
|
||||||
}
|
}
|
||||||
|
|
||||||
//#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct IdentityManager {
|
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
|
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 : Box<crate::core::botinstance::BotManagers>,
|
||||||
|
@ -131,7 +131,7 @@ impl IdentityManager {
|
||||||
// [ ] Maybe I should create a can_user_run version that simply takes PrvMsg, but then calls can_user_run directly
|
// [ ] 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>) -> 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);
|
// println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
|
||||||
|
|
||||||
|
@ -152,7 +152,11 @@ impl IdentityManager {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if let Some(sender_badge) = sender_badge {
|
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
|
||||||
|
return self.can_user_run(msg.sender.name.to_owned(),
|
||||||
ChType::Channel(msg.channel_login.to_owned()),
|
ChType::Channel(msg.channel_login.to_owned()),
|
||||||
sender_badge,
|
sender_badge,
|
||||||
cmdreqroles
|
cmdreqroles
|
||||||
|
@ -162,7 +166,7 @@ impl IdentityManager {
|
||||||
|
|
||||||
|
|
||||||
// [ ] Call can_user_run()
|
// [ ] Call can_user_run()
|
||||||
&Permissible::Block
|
Permissible::Block
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn can_user_run(mut self,
|
pub fn can_user_run(mut self,
|
||||||
|
|
|
@ -69,7 +69,7 @@ pub fn init(mgr:&mut ModulesManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async fn good_girl(mut chat:botinstance::Chat,msg:PrivmsgMessage)
|
async fn good_girl(mut bot:botinstance::BotManagers,msg:PrivmsgMessage)
|
||||||
{
|
{
|
||||||
println!("In GoodGirl()");
|
println!("In GoodGirl()");
|
||||||
//println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
|
//println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
|
||||||
|
@ -88,9 +88,11 @@ async fn good_girl(mut chat:botinstance::Chat,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) {
|
||||||
let rollwin = rand::thread_rng().gen_ratio(1,10);
|
println!("In GoodGirl() > Pausechamp");
|
||||||
|
let rollwin = rand::thread_rng().gen_ratio(1,5);
|
||||||
if rollwin {
|
if rollwin {
|
||||||
chat.say_in_reply_to(&msg,String::from("GoodGirl xdd ")).await;
|
println!("In GoodGirl() > Win");
|
||||||
|
bot.chat.say_in_reply_to(&msg,String::from("GoodGirl xdd ")).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -100,7 +102,7 @@ async fn good_girl(mut chat:botinstance::Chat,msg:PrivmsgMessage)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn testy(mut _chat:botinstance::Chat,_msg:PrivmsgMessage)
|
async fn testy(mut _chat:botinstance::BotManagers,_msg:PrivmsgMessage)
|
||||||
{
|
{
|
||||||
println!("testy triggered!")
|
println!("testy triggered!")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue