MOTD Formatting

This commit is contained in:
2025-11-26 12:19:29 +01:00
parent fb399c3d4e
commit 560c6715e1

View File

@@ -88,6 +88,8 @@ class IRCFrame(wx.Frame):
wx.Colour(139, 0, 0), # Dark red
]
self.color_index = 0
self.motd_lines = []
self.collecting_motd = False
self.setup_irc_handlers()
self.create_menubar()
@@ -453,6 +455,9 @@ class IRCFrame(wx.Frame):
self.reactor.add_global_handler("whoisuser", self.on_whoisuser)
self.reactor.add_global_handler("whoischannels", self.on_whoischannels)
self.reactor.add_global_handler("whoisserver", self.on_whoisserver)
self.reactor.add_global_handler("375", self.on_motd_start)
self.reactor.add_global_handler("372", self.on_motd_line)
self.reactor.add_global_handler("376", self.on_motd_end)
except Exception as e:
logger.error(f"Error setting up IRC handlers: {e}")
@@ -460,7 +465,9 @@ class IRCFrame(wx.Frame):
"""Catch-all handler to log ALL server events in the Server tab"""
try:
# Don't log certain very frequent events to avoid spam
if event.type in ("pubmsg", "privmsg", "action"):
noisy_events = {"pubmsg", "privmsg", "action", "motd", "motdstart", "motdend", "375", "372", "376"}
event_type = event.type.lower() if isinstance(event.type, str) else event.type
if event_type in noisy_events:
return
# Format the raw event for display
@@ -1200,6 +1207,44 @@ COMMANDS (type /help in chat for full list):
except Exception as e:
logger.error(f"Error in notice handler: {e}")
def on_motd_start(self, connection, event):
"""Handle numeric 375 — start of MOTD."""
try:
self.collecting_motd = True
self.motd_lines = []
headline = event.arguments[-1] if event.arguments else "Message of the Day"
self.log_server(f"MOTD begins: {headline}", wx.Colour(0, 0, 128), bold=True)
except Exception as e:
logger.error(f"Error in MOTD start handler: {e}")
def on_motd_line(self, connection, event):
"""Handle numeric 372 — each MOTD line."""
try:
if not self.collecting_motd:
self.collecting_motd = True
self.motd_lines = []
if event.arguments:
raw_line = event.arguments[-1]
cleaned = raw_line.lstrip("- ").rstrip()
if cleaned:
self.motd_lines.append(cleaned)
except Exception as e:
logger.error(f"Error in MOTD line handler: {e}")
def on_motd_end(self, connection, event):
"""Handle numeric 376 — end of MOTD."""
try:
if self.motd_lines:
panel = self.channels.get("SERVER")
if panel:
for line in self.motd_lines:
panel.add_system_message(f" {line}", wx.Colour(70, 70, 70))
self.log_server("End of MOTD", wx.Colour(0, 0, 128))
self.collecting_motd = False
self.motd_lines = []
except Exception as e:
logger.error(f"Error in MOTD end handler: {e}")
def on_disconnect(self, connection, event):
try:
self.log_server("Disconnected from server", wx.Colour(255, 0, 0), bold=True) # Red for disconnect