From cdece050ff66db48021c3d4010d252b459dcb762 Mon Sep 17 00:00:00 2001 From: Max Audron Date: Wed, 17 Dec 2025 23:55:02 +0100 Subject: add twitter cancel feature yeah nitter --- src/hooks/nitter.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/hooks/nitter.rs (limited to 'src/hooks/nitter.rs') diff --git a/src/hooks/nitter.rs b/src/hooks/nitter.rs new file mode 100644 index 0000000..f29e885 --- /dev/null +++ b/src/hooks/nitter.rs @@ -0,0 +1,29 @@ +use std::sync::LazyLock; + +use anyhow::{Context, Result}; +use irc::client::prelude::*; +use regex::Regex; + +static RE: LazyLock = + LazyLock::new(|| Regex::new(r"https:\/\/(?:twitter|x)\.com\/(\S+?)(?:\s|$)").unwrap()); + +const URL: &str = "https://xcancel.com/"; + +pub fn nitter(bot: &crate::Bot, msg: Message) -> Result<()> { + if let Command::PRIVMSG(_, text) = msg.command.clone() { + let path = RE + .captures(&text) + .context("failed to capture twitter url path")? + .get(1) + .context("failed to get path capture group")? + .as_str(); + + bot.send_privmsg( + msg.response_target() + .context("failed to get response target")?, + format!("get cancled {URL}{path}").as_str(), + )?; + } + + Ok(()) +} -- cgit v1.2.3