From 38be251b5f4ed4dabe21753451e23c233b62b6dd Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Sat, 1 Mar 2025 16:35:00 -0700 Subject: autoproxy: member mode Also adds method for system to resolve mentions to system members --- src/system/types.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/system/types.rs') diff --git a/src/system/types.rs b/src/system/types.rs index bd1e40f..c4da066 100644 --- a/src/system/types.rs +++ b/src/system/types.rs @@ -1,13 +1,16 @@ use regex::Regex; use twilight_http::Client; use twilight_gateway::Shard; +use twilight_mention::ParseMention; use twilight_model::id::{marker::UserMarker, Id}; use std::sync::Arc; use tokio::sync::Mutex; #[derive(Clone)] pub struct Member { + pub name: String, pub discord_token: String, + pub user_id: Arc>>>, pub message_pattern: Regex, pub shard: Arc>, pub client: Arc>, @@ -32,3 +35,21 @@ pub enum SystemThreadCommand { ShutdownSystem, ShutdownAll, } + +impl System { + pub async fn resolve_mention<'system>(&'system self, maybe_mention: Option<&str>) -> Option<&'system Member> { + if let Some(mention) = maybe_mention { + if let Ok(mention) = Id::::parse(mention) { + for member in &self.members { + let is_member = {member.user_id.lock().await.map(|id| id == mention).unwrap_or(false)}; + + if is_member { + return Some(&member) + } + } + } + } + + None + } +} -- cgit 1.4.1