use tokio::sync::mpsc::UnboundedReceiver; use twitch_irc::login::StaticLoginCredentials; use twitch_irc::ClientConfig; use twitch_irc::SecureTCPTransport; use twitch_irc::TwitchIRCClient; use twitch_irc::message::ServerMessage; use twitch_irc::transport::tcp::TCPTransport; use twitch_irc::transport::tcp::TLS; use std::env; use dotenv::dotenv; pub struct BotInstance { prefix : char, bot_channel : String, pub client : TwitchIRCClient,StaticLoginCredentials>, pub incoming_messages : UnboundedReceiver, // ratelimiters : HashMap, // used to limit messages sent per channel // botmodules : Hashmap, twitch_oauth : String, pub bot_channels : Vec, /*bot_commands : Vec[BotCommand], bot_listeners : Vec[Listener], bot_routines : Vec[Routine],*/ // botactionsdb : botactionsdb:botactions, // identity : identitymodule, } impl BotInstance { pub fn init() -> BotInstance { dotenv().ok(); let login_name = "modulatingforcebot".to_owned(); let oauth_token = env::var("access_token").unwrap().to_owned(); /* Vector of channels to join */ let mut botchannels = Vec::new(); for chnl in env::var("bot_channels").unwrap().split(',') { // println!("(Env Var # {})",chnl); botchannels.push(String::from(chnl)); } let config = ClientConfig::new_simple( StaticLoginCredentials::new(login_name.to_owned(), Some(oauth_token.to_owned())) ); let (incoming_messages, client) = TwitchIRCClient::::new(config); for chnl in &botchannels { client.join(chnl.to_owned()).unwrap(); // client.say(chnl.to_owned(), "Connected!".to_owned()).await.unwrap(); //client.say(chnl.to_owned(), "annytfLurk".to_owned()).await.unwrap(); } BotInstance { prefix : '>', bot_channel : login_name , // tclient : TwitchClient { incoming_messages , client }, incoming_messages, client, // ratelimiters : HashMap, // used to limit messages sent per channel // botmodules : Hashmap, twitch_oauth : oauth_token, bot_channels : botchannels, /*bot_commands : Vec[BotCommand], bot_listeners : Vec[Listener], bot_routines : Vec[Routine],*/ // botactionsdb : botactionsdb:botactions, // identity : identitymodule, } } }