initial commit (leaked api keys last time 💀)

This commit is contained in:
ultrablob 2025-04-20 21:10:15 -04:00
commit 6cc62a000c
4 changed files with 2155 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
/target
.env

2097
Cargo.lock generated Normal file

File diff suppressed because it is too large Load diff

12
Cargo.toml Normal file
View file

@ -0,0 +1,12 @@
[package]
name = "announcement_bot"
version = "0.1.0"
edition = "2024"
[dependencies]
dateparser = "0.2.1"
discord-webhook-rs = "1.0.4"
dotenvy = "0.15.7"
regex = "1.11.1"
reqwest = { version = "0.12.15", features = ["blocking"] }
time = { version = "0.3.41", features = ["parsing", "macros"] }

44
src/main.rs Normal file
View file

@ -0,0 +1,44 @@
use discord_webhook_rs::Webhook;
use regex::Regex;
use std::env;
use time::macros::format_description;
use time::{Date, OffsetDateTime};
fn main() {
dotenvy::dotenv().expect("Need a .env file");
let doc_url = env::var("DOC_URL").expect("Missing DOC_URL in .env");
let webhook = env::var("WEBHOOK_URL").expect("Missing WEBHOOK_URL in .env");
let body = reqwest::blocking::get(doc_url + "/export?gid=0&format=txt")
.unwrap()
.text()
.expect("Google doc download failed!");
let announcement_matcher = Regex::new(r"(\w+day,? \w+ \d+) *((?:.|\n)+?)\n\w+day").unwrap();
let last_announcement = announcement_matcher.captures_iter(&body).next().unwrap();
let date = last_announcement.get(1).unwrap().as_str().replace(",", "");
let announcements = last_announcement
.get(2)
.unwrap()
.as_str()
.trim()
.replace("\n\n", "\n");
let description = &format_description!("[weekday] [month repr:long] [day] [year]");
let parsed_date = Date::parse(&format!("{} 2025", date), description).unwrap();
println!("Date: {:}", parsed_date);
if OffsetDateTime::now_utc().date() != parsed_date {
println!("Last date is not today!");
return;
}
Webhook::new(webhook)
.content(&format!("## {}:\n{}", date, announcements))
.send()
.unwrap();
}