From c736663ccc1ba95436ec047e3522546946323990 Mon Sep 17 00:00:00 2001 From: user0-07161 Date: Sun, 15 Feb 2026 18:32:45 +0100 Subject: [PATCH] feat: allow messaging from sermo to ircd-hybrid --- src/ts6/mod.rs | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/ts6/mod.rs b/src/ts6/mod.rs index be3563f..cea5d63 100644 --- a/src/ts6/mod.rs +++ b/src/ts6/mod.rs @@ -13,10 +13,14 @@ use tokio::{ use tracing::debug; use crate::{ + FOREIGN_CONNECTED_USERS, config::ServerInfo, - messages::Message, + messages::{Message, Receiver as MsgReceiver}, sender::IrcResponse, - ts6::{commands::Ts6Command, structs::ServerId}, + ts6::{ + commands::Ts6Command, + structs::{ServerId, UserId}, + }, }; #[derive(Clone, Debug, Default)] @@ -138,6 +142,36 @@ impl Ts6 { .unwrap(); } + Message::PrivMessage(priv_message) => 'priv_message_handler: { + let sender_uid = priv_message.sender.user_id; + let receiver_uid: UserId = match priv_message.receiver { + MsgReceiver::Username(username) => 'find_uid: { + let foreign_users = FOREIGN_CONNECTED_USERS.lock().await.clone(); + + for user in foreign_users { + if user.username == username { + break 'find_uid user.user_id.clone(); + } + } + + break 'priv_message_handler; + } + + _ => break 'priv_message_handler, + }; + let text = priv_message.text; + + IrcResponse { + sender: Some(sender_uid.to_string()), + command: "PRIVMSG".to_string(), + receiver: Some(receiver_uid.to_string()), + arguments: vec![], + message: text, + } + .send(hostname, writer, false) + .await?; + } + _ => {} }