From 6647a9ae92264b75bdd04d64cdc668b4d7796ca5 Mon Sep 17 00:00:00 2001 From: pep Date: Thu, 8 Jan 2026 23:41:35 +0100 Subject: [PATCH] bot: Add 'version' and help (any other message) command Signed-off-by: pep --- src/bot.rs | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/bot.rs b/src/bot.rs index be7a56d..4d09ffa 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -24,7 +24,8 @@ use xmpp::jid::{BareJid, Jid, ResourcePart}; use xmpp::parsers::message::MessageType; use xmpp::{ Agent, ClientBuilder, ClientFeature, ClientType, Config as AgentConfig, Event, RoomNick, - message::send::RawMessageSettings, muc::room::JoinRoomSettings, + message::send::{MessageSettings, RawMessageSettings}, + muc::room::JoinRoomSettings, }; pub struct XmppClient { @@ -83,13 +84,36 @@ impl XmppClient { debug!("Received chat message from {}: {}", bare, message); - if message == "rejoin" { - for room in &self.config.rooms { + match message.as_str() { + "rejoin" => { + for room in &self.config.rooms { + self.agent + .join_room(JoinRoomSettings { + nick: Some(RoomNick::from_resource_ref( + self.nickname.as_ref(), + )), + force_resync: true, + ..JoinRoomSettings::new(room.clone()) + }) + .await + } + } + "version" => { self.agent - .join_room(JoinRoomSettings { - nick: Some(RoomNick::from_resource_ref(self.nickname.as_ref())), - force_resync: true, - ..JoinRoomSettings::new(room.clone()) + .send_message(MessageSettings { + recipient: bare, + message: self.config.version.unwrap_or("No version specified."), + lang: Some("en"), + }) + .await + } + _ => { + let message = "Help:\nrejoin: Re-join all rooms.\nversion: Display software version."; + self.agent + .send_message(MessageSettings { + recipient: bare, + message, + lang: Some("en"), }) .await }