aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client/event.rs3
-rw-r--r--src/client/handler.rs9
-rw-r--r--src/main.rs4
3 files changed, 16 insertions, 0 deletions
diff --git a/src/client/event.rs b/src/client/event.rs
index 26e3f86..2c06d98 100644
--- a/src/client/event.rs
+++ b/src/client/event.rs
@@ -13,6 +13,9 @@ pub enum Event {
is_notice: bool,
},
+ /// A system message like MOTD
+ SysMessage { text: String },
+
/// We joined a channel
Joined { channel: String, nick: String },
diff --git a/src/client/handler.rs b/src/client/handler.rs
index 334240c..63baf87 100644
--- a/src/client/handler.rs
+++ b/src/client/handler.rs
@@ -79,6 +79,15 @@ pub fn handle(msg: IrcMessage, state: &mut ClientState, sender: &Sender) -> Vec<
}
}
+ // MOTD commands
+ Command::Numeric(375) | Command::Numeric(376) | Command::Numeric(372) => {
+ if let Some(message) = msg.params.get(1) {
+ events.push(Event::SysMessage {
+ text: message.clone(),
+ });
+ }
+ }
+
Command::Join => {
let nick = nick_from_prefix(&msg.prefix);
if let Some(channel) = msg.params.first() {
diff --git a/src/main.rs b/src/main.rs
index db1922f..fc373d6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -226,6 +226,10 @@ fn handle_irc_event(event: IrcEvent, app: &mut AppState) {
}
}
+ IrcEvent::SysMessage { text } => {
+ app.push_system(text.as_str());
+ }
+
IrcEvent::Parted {
channel,
nick,