Not working so far

This commit is contained in:
Ladislav Hano 2023-07-14 15:04:01 +02:00
parent e34df85f0c
commit 6f08376a0a
6 changed files with 101 additions and 24 deletions

View file

@ -14,3 +14,5 @@ poise = "0.5.5"
serenity = { version = "0.11.6", default-features = false, features = ["client", "gateway", "rustls_backend", "model", "http"] }
serenity_utils = "0.7.0"
tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread"] }
rand = "0.8.4"
regex = "1.9.0"

View file

@ -1,14 +1,11 @@
use std::sync::Arc;
use poise::serenity_prelude::GuildChannel;
use serenity::async_trait;
use serenity::http::{self, Http};
use serenity::model::channel::Message;
use serenity::model::gateway::Ready;
use serenity::model::id::ChannelId;
use serenity::prelude::*;
use util::security::dotenv_var;
use rand::random;
mod moove;
mod util;
struct Handler;
@ -25,22 +22,29 @@ impl EventHandler for Handler {
async fn ready(&self, ctx: Context, ready: Ready) {
println!("{} is connected!", ready.user.name);
// if (ready.user.name != "MOOver Debug") {
let messages = [
"AAAAAAAAAAAAAAAAAAAA",
"Henlooo",
"Good day y'all!",
"May have crashed...",
"MOOOooo",
"Heyyyyy!",
"I'm baaaaack!",
"Whom'st have summoned the ancient one?",
];
// }
let channel = ctx.http.get_channel(780439236867653635).await.unwrap();
let debug = match dotenv_var("DEBUG") {
Some(v) => v,
None => "OFF".to_string()
};
if debug == "ON" {
let messages = [
"AAAAAAAAAAAAAAAAAAAA",
"Henlooo",
"Good day y'all!",
"May have crashed...",
"MOOOooo",
"Heyyyyy!",
"I'm baaaaack!",
"Whom'st have summoned the ancient one?",
];
let rand_num = random::<usize>() % messages.len();
let channel = ctx.http.get_channel(780439236867653635).await.unwrap().id();
match channel.say(&ctx.http, messages[rand_num]).await {
Err(e) => println!("Something went wrong: {e}"),
Ok(_) => return
};
}
}
}
@ -49,7 +53,6 @@ async fn main() -> anyhow::Result<()> {
use anyhow::Context;
let token = dotenv_var("TOKEN").context("No TOKEN in env")?;
let intents = GatewayIntents::GUILD_MESSAGES
| GatewayIntents::DIRECT_MESSAGES
| GatewayIntents::MESSAGE_CONTENT;
let mut client = Client::builder(&token, intents)

73
src/moove.rs Normal file
View file

@ -0,0 +1,73 @@
use serenity::builder::{CreateEmbed, CreateMessage};
use serenity::model::channel::Message;
use serenity::http::Http;
use serenity::model::channel::Attachment;
use anyhow;
use serenity::model::mention;
// use regex::Regex;
// Checks if the message should be mooved, if not returns Ok(0)
// If the message should be mooved, try to move it and return Ok(1) if mooved succesfully
// else returns Err()
pub async fn moove(http: Http, msg: Message) -> Result<u8, String>{
let channel_mentions = msg.mention_channels;
let words = msg.content.trim().split_whitespace().count();
// let re = Regex::new(r"<#[0-9]*>$").unwrap();
// if re.captures(content)
if channel_mentions.len() != 1 || words != 1 {
return Ok(0);
}
let mut msg_to_moove = match msg.referenced_message {
Some(m) => m,
None => return Ok(0)
};
let mentioned_channel = channel_mentions[0].id;
let attachments = msg_to_moove.attachments;
let embeds = msg_to_moove.embeds;
let sent_by = format!("Sent by {}\n mooved {}\n", msg_to_moove.author, msg.author);
let mut embeds_copy : Vec<CreateEmbed> = Vec::new();
for embed in msg_to_moove.embeds {
embeds_copy.push(CreateEmbed::from(embed));
}
// let mut attachment_links : Vec<String> = Vec::new();
let attachment_link = msg_to_moove.attachments.pop();
// for attachment in msg_to_moove.attachments {
// attachment_links.push(attachment.url);
// }
// if embeds_copy.len() > 0 || attachment_links.len() > 0 {
if embeds_copy.len() > 0 {
let mut new_content = "".to_string();
if !msg_to_moove.content.is_empty() {
new_content = format!("Message:\n{}", msg_to_moove.content);
}
sent_by.push_str(&new_content);
match mentioned_channel.send_message(http, |m| {
m.content(sent_by).add_embeds(embeds_copy).add_file(attachment_link)
}).await {
Ok(_) => return Ok(0),
Err(e) => return Err(e.to_string())
};
}
else if !msg_to_moove.content.is_empty() {
match mentioned_channel.send_message(http, |m| {
m.add_embed(|e| {
e.title("MOO").field(sent_by, " ", false).field("Message:\n", msg_to_moove.content, false)
})
}).await {
Ok(_) => return Ok(0),
Err(e) => return Err(e.to_string())
};
}
Err("Something went wrong while mooving the message".to_string())
}

0
src/util/embeds.rs Normal file
View file

View file

@ -3,10 +3,9 @@ use std::env;
pub fn dotenv_var(key: &str) -> Option<String> {
dotenv().ok();
let key = "TOKEN";
match env::var(key) {
Ok(val) => return Some(val),
Err(_) => None,
Err(_) => None
}
}

0
src/util/utilities.rs Normal file
View file