Add src/main.rs

This commit is contained in:
neppa 2023-10-06 13:55:41 -04:00
parent f01e19542a
commit 1cd7a1920a

232
src/main.rs Normal file
View file

@ -0,0 +1,232 @@
use twitch_irc::login::StaticLoginCredentials;
use twitch_irc::TwitchIRCClient;
use twitch_irc::{ClientConfig, SecureTCPTransport};
use twitch_irc::message::ServerMessage;
use dotenv::dotenv;
use std::env;
/*
NOTE: This project is a mess, because I have literally zero idea on how to code
in Rust. Just take the good stuff and fix the messy things lul
*/
#[tokio::main]
pub async fn main() {
// Load all lines from .env
dotenv().ok();
// Temp variables for loading .env
let mut fetch_login_name = String::from("");
let mut fetch_oauth = String::from("");
// Read env keys
match env::var("TWITCH_LOGIN_NAME") {
Ok(value) => {
println!("TWITCH_LOGIN_NAME value is: {}", value);
fetch_login_name.push_str(value.as_str());
}
Err(_) => {
eprintln!("TWITCH_LOGIN_NAME is not set or is an invalid UTF-8 string.");
}
}
match env::var("TWITCH_OAUTH_TOKEN") {
Ok(value) => {
println!("TWITCH_OAUTH_TOKEN value is: {}", value);
fetch_oauth.push_str(value.as_str());
}
Err(_) => {
eprintln!("TWITCH_OAUTH_TOKEN is not set or is an invalid UTF-8 string");
}
}
// default configuration is to join chat as anonymous.
//let config = ClientConfig::default();
// Login with oauth + display name
let login_name = fetch_login_name.to_owned();
let oauth_token = fetch_oauth.to_owned();
let config = ClientConfig::new_simple(
StaticLoginCredentials::new(login_name, Some(oauth_token))
);
// uuh wtf is this
let (mut incoming_messages, client) =
TwitchIRCClient::<SecureTCPTransport, StaticLoginCredentials>::new(config);
// join a channel
// This function only returns an error if the passed channel login name is malformed,
// so in this simple case where the channel name is hardcoded we can ignore the potential
// error with `unwrap`.
let join_channel = "notohh".to_owned();
client.join(join_channel.to_owned()).unwrap();
let mut allow_all = true.to_owned();
let mut enable = true.to_owned();
//client.say(join_channel.to_owned(), "wokege".to_owned()).await.unwrap();
// first thing you should do: start consuming incoming messages,
// otherwise they will back up.
let join_handle = tokio::spawn(async move {
while let Some(message) = incoming_messages.recv().await {
match message {
ServerMessage::Privmsg(msg) => {
//println!("(#{}) {}: {}", msg.channel_login, msg.sender.name, msg.message_text);
if msg.sender.name == "T3neppa" {
if msg.message_text.contains("!allow") {
if msg.message_text.contains("everyone") {
allow_all = true;
client.say(join_channel.to_owned(), "allow -> everyone".to_owned()).await.unwrap();
}
if msg.message_text.contains("limited") {
allow_all = false;
client.say(join_channel.to_owned(), "allow -> neppa".to_owned()).await.unwrap();
}
}
if msg.message_text.starts_with("!e") {
enable = true;
client.say(join_channel.to_owned(), "pogs freedom".to_owned()).await.unwrap();
}
if msg.message_text.starts_with("!d") {
enable = false;
client.say(join_channel.to_owned(), "sadg".to_owned()).await.unwrap();
}
let words: Vec<&str> = msg.message_text.split_whitespace().collect();
for word in words {
println!("{}", word);
}
}
if msg.sender.name == "T3neppa" || (allow_all && enable) {
println!("(#{}) {}: {}", msg.channel_login,msg.sender.name, msg.message_text);
match msg.message_text.find("!cmd") {
Some(index) => {
if index == 0 {
if msg.sender.name == "T3neppa" {
client.say(join_channel.to_owned(), "unimplemented".to_owned()).await.unwrap();
}else{
let cmd_response = "tuckk {msg.sender.name}";
client.say(join_channel.to_owned(), cmd_response.to_owned()).await.unwrap();
}
}
}
None => {
}
}
match msg.message_text.find("uuh") {
Some(index) => {
client.say(join_channel.to_owned(), "uuh".to_owned()).await.unwrap();
}
None => {
}
}
match msg.message_text.find("cum") {
Some(index) => {
client.say(join_channel.to_owned(), "sadE".to_owned()).await.unwrap();
}
None => {
}
}
if msg.message_text.starts_with("test") && msg.channel_login == "notohh" {
client.say(join_channel.to_owned(), "I'll test yourmom tonight".to_owned()).await.unwrap();
}
if msg.message_text.to_lowercase().contains("tuck") && msg.message_text.to_lowercase().contains("smug") {
client.say(join_channel.to_owned(), "Bedge".to_owned()).await.unwrap();
}
if msg.message_text.contains("hmm") {
client.say(join_channel.to_owned(), "think faster idiot".to_owned()).await.unwrap();
}
if msg.message_text.contains("cock") {
client.say(join_channel.to_owned(), "YEP".to_owned()).await.unwrap();
}
if msg.message_text.contains("actually") {
client.say(join_channel.to_owned(), "lol Nerdge".to_owned()).await.unwrap();
}
if msg.message_text.contains("pwd") {
client.say(join_channel.to_owned(), "yourmom".to_owned()).await.unwrap();
}
if msg.message_text.contains("thread") {
client.say(join_channel.to_owned(), "what".to_owned()).await.unwrap();
}
if msg.message_text.contains("femboy") {
client.say(join_channel.to_owned(), format!("AREYOUAFEMBOY {}", msg.sender.name).to_owned()).await.unwrap();
}
/*
if msg.message_text.contains("rm") {
if msg.message_text.contains("-") {
client.say("notohh".to_owned(), "oopsie".to_owned()).await.unwrap();
}else{
client.say("notohh".to_owned(), "no permission".to_owned()).await.unwrap();
}
}
*/
if let Some(index) = msg.message_text.find("ping") {
if index == 0 {
client.say(join_channel.to_owned(), "kok".to_owned()).await.unwrap();
}
}
if msg.message_text.contains("KannaLost") {
client.say(join_channel.to_owned(), "KannaLost PETPET".to_owned()).await.unwrap();
}
if (msg.message_text.contains("femboy") || msg.message_text.to_lowercase().contains("pog")) && msg.message_text.contains("friday") {
client.say(join_channel.to_owned(), "dinkDonk femboy friday dinkDonk ".to_owned()).await.unwrap();
}
if msg.message_text.contains("fuck") && msg.message_text.contains("this") {
client.say(join_channel.to_owned(), "AAA".to_owned()).await.unwrap();
}
if msg.message_text.contains("ls") {
if msg.message_text.contains("-") {
client.say(join_channel.to_owned(), "Homework Downloads Pictures Gacchi".to_owned()).await.unwrap();
}else{
client.say(join_channel.to_owned(), "Erm".to_owned()).await.unwrap();
}
}
if msg.message_text.contains("POGCRAZY") {
client.say(join_channel.to_owned(), "POGCRAZY yayy".to_owned()).await.unwrap();
}
if msg.message_text.contains("rust") {
client.say(join_channel.to_owned(), "Scared".to_owned()).await.unwrap();
}
if msg.message_text.starts_with("smug") {
client.say(join_channel.to_owned(), "yo".to_owned()).await.unwrap();
}
}
},
ServerMessage::Whisper(msg) => {
println!("(w) {}: {}", msg.sender.name, msg.message_text);
},
_ => {}
}
}
});
// keep the tokio executor alive.
// If you return instead of waiting the background task will exit.
join_handle.await.unwrap();
}