Files
robotnik/src/event.rs

33 lines
792 B
Rust
Raw Normal View History

use irc::proto::{Command, Message};
2025-11-09 00:02:38 -06:00
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
pub struct Event {
from: String,
2025-11-09 00:02:38 -06:00
message: String,
}
impl Event {
pub fn new(from: impl Into<String>, msg: impl Into<String>) -> Self {
2025-11-09 00:02:38 -06:00
Self {
from: from.into(),
2025-11-09 00:02:38 -06:00
message: msg.into(),
}
}
}
impl TryFrom<&Message> for Event {
type Error = &'static str;
fn try_from(value: &Message) -> Result<Self, Self::Error> {
let from = value.response_target().unwrap_or("unknown").to_string();
match &value.command {
Command::PRIVMSG(_channel, message) => Ok(Event {
from,
message: message.clone(),
}),
_ => Err("Not a PRIVMSG"),
}
}
}