+2
src/event_handler/mod.rs
+2
src/event_handler/mod.rs
···
3
3
4
4
mod code_expantion;
5
5
mod kitten;
6
+
mod replace_link;
6
7
7
8
use crate::types::Data;
8
9
···
16
17
17
18
code_expantion::handle(ctx, event, client).await?;
18
19
kitten::handle(ctx, event, client).await?;
20
+
replace_link::handle(ctx, event, client).await?;
19
21
20
22
Ok(())
21
23
}
+44
src/event_handler/replace_link.rs
+44
src/event_handler/replace_link.rs
···
1
+
use color_eyre::eyre::Result;
2
+
use poise::serenity_prelude::{Context, FullEvent};
3
+
use regex::Regex;
4
+
use reqwest::Client;
5
+
use serenity::all::EditMessage;
6
+
7
+
pub async fn handle(ctx: &Context, event: &FullEvent, _client: &Client) -> Result<()> {
8
+
if let FullEvent::Message { new_message } = event {
9
+
let regex = Regex::new(r"(https?:\/\/(?:www\.)?(x\.com|twitter\.com|reddit\.com|instagram\.com|tiktok\.com)\/[^\s]+)").unwrap();
10
+
let mut links: Vec<String> = Vec::new();
11
+
12
+
for capture in regex.find_iter(&new_message.content) {
13
+
let url = capture.as_str();
14
+
15
+
let modified_url = url
16
+
.replace("https://x.com", "https://fxtwitter.com")
17
+
.replace("https://twitter.com", "https://fxtwitter.com")
18
+
.replace("https://www.reddit.com", "https://rxddit.com")
19
+
.replace("https://reddit.com", "https://rxddit.com")
20
+
.replace("https://www.instagram.com", "https://ddinstagram.com")
21
+
.replace("https://instagram.com", "https://ddinstagram.com")
22
+
.replace("https://www.tiktok.com", "https://tfxktok.com")
23
+
.replace("https://tiktok.com", "https://tfxktok.com");
24
+
25
+
links.push(modified_url);
26
+
}
27
+
28
+
let message_id = new_message.id;
29
+
let channel_id = new_message.channel_id;
30
+
31
+
if !links.is_empty() {
32
+
let _ = channel_id
33
+
.edit_message(
34
+
ctx.http.clone(),
35
+
message_id,
36
+
EditMessage::new().suppress_embeds(true),
37
+
)
38
+
.await;
39
+
let _ = new_message.reply(ctx.http.clone(), links.join("\n")).await;
40
+
}
41
+
}
42
+
43
+
Ok(())
44
+
}