feat: allow messaging from sermo to ircd-hybrid
All checks were successful
build / test-alpine (push) Successful in 49s
build / test-debian (push) Successful in 1m31s

This commit is contained in:
user0-07161 2026-02-15 18:32:45 +01:00
parent 71b5741ebd
commit c736663ccc

View file

@ -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?;
}
_ => {}
}