From 7af1e33a489b682705f9b0a40471298e49816517 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 27 Jun 2025 11:56:26 +0200 Subject: [PATCH 1/2] Upgrade to edition 2024 --- hello_world/Cargo.toml | 2 +- hello_world/src/main.rs | 2 +- joke_bot/Cargo.toml | 2 +- joke_bot/src/main.rs | 4 ++-- message_log/Cargo.toml | 2 +- message_log/src/main.rs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hello_world/Cargo.toml b/hello_world/Cargo.toml index 679fcce..6b0579e 100644 --- a/hello_world/Cargo.toml +++ b/hello_world/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "hello_world" version = "0.1.0" -edition = "2021" +edition = "2024" publish = false [dependencies] diff --git a/hello_world/src/main.rs b/hello_world/src/main.rs index 789ce3e..5507870 100644 --- a/hello_world/src/main.rs +++ b/hello_world/src/main.rs @@ -1,9 +1,9 @@ use std::{env, process::exit}; use ruma::{ + OwnedRoomAliasId, TransactionId, api::client::{alias::get_alias, membership::join_room_by_id, message::send_message_event}, events::room::message::RoomMessageEventContent, - OwnedRoomAliasId, TransactionId, }; type HttpClient = ruma::client::http_client::HyperNativeTls; diff --git a/joke_bot/Cargo.toml b/joke_bot/Cargo.toml index 96cdd0d..767cfe4 100644 --- a/joke_bot/Cargo.toml +++ b/joke_bot/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "joke_bot" version = "0.1.0" -edition = "2021" +edition = "2024" publish = false [dependencies] diff --git a/joke_bot/src/main.rs b/joke_bot/src/main.rs index 29fea38..7ffc148 100644 --- a/joke_bot/src/main.rs +++ b/joke_bot/src/main.rs @@ -4,18 +4,18 @@ use futures_util::future::{join, join_all}; use http_body_util::BodyExt as _; use hyper_util::rt::TokioExecutor; use ruma::{ + OwnedRoomId, OwnedUserId, TransactionId, UserId, api::client::{ filter::FilterDefinition, membership::join_room_by_id, message::send_message_event, sync::sync_events, }, assign, client, events::{ - room::message::{MessageType, RoomMessageEventContent}, AnySyncMessageLikeEvent, AnySyncTimelineEvent, SyncMessageLikeEvent, + room::message::{MessageType, RoomMessageEventContent}, }, presence::PresenceState, serde::Raw, - OwnedRoomId, OwnedUserId, TransactionId, UserId, }; use serde_json::Value as JsonValue; use tokio::fs; diff --git a/message_log/Cargo.toml b/message_log/Cargo.toml index f5039df..03c73ce 100644 --- a/message_log/Cargo.toml +++ b/message_log/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "message_log" version = "0.1.0" -edition = "2021" +edition = "2024" publish = false [dependencies] diff --git a/message_log/src/main.rs b/message_log/src/main.rs index 98f7ff3..c732fa2 100644 --- a/message_log/src/main.rs +++ b/message_log/src/main.rs @@ -4,9 +4,9 @@ use ruma::{ api::client::{filter::FilterDefinition, sync::sync_events}, assign, events::{ - room::message::{MessageType, RoomMessageEventContent, TextMessageEventContent}, AnySyncMessageLikeEvent, AnySyncTimelineEvent, OriginalSyncMessageLikeEvent, SyncMessageLikeEvent, + room::message::{MessageType, RoomMessageEventContent, TextMessageEventContent}, }, presence::PresenceState, }; From 36ccbe7c7867efb4941ca8f5f9e2444854902a59 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Fri, 27 Jun 2025 12:02:14 +0200 Subject: [PATCH 2/2] Use let chains for readability --- joke_bot/src/main.rs | 41 +++++++++++++++++------------------------ message_log/src/main.rs | 25 +++++++++---------------- 2 files changed, 26 insertions(+), 40 deletions(-) diff --git a/joke_bot/src/main.rs b/joke_bot/src/main.rs index 7ffc148..24273f5 100644 --- a/joke_bot/src/main.rs +++ b/joke_bot/src/main.rs @@ -161,37 +161,30 @@ async fn create_matrix_session( async fn handle_message( http_client: &HttpClient, matrix_client: &MatrixClient, - e: &Raw, + ev: &Raw, room_id: OwnedRoomId, bot_user_id: &UserId, ) -> Result<(), Box> { if let Ok(AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( SyncMessageLikeEvent::Original(m), - ))) = e.deserialize() + ))) = ev.deserialize() + // workaround because Conduit does not implement filtering + && m.sender != bot_user_id + && let MessageType::Text(t) = m.content.msgtype { - // workaround because Conduit does not implement filtering. - if m.sender == bot_user_id { - return Ok(()); - } - - if let MessageType::Text(t) = m.content.msgtype { - println!("{}:\t{}", m.sender, t.body); - if t.body.to_ascii_lowercase().contains("joke") { - let joke = match get_joke(http_client).await { - Ok(joke) => joke, - Err(_) => "I thought of a joke... but I just forgot it.".to_owned(), - }; - let joke_content = RoomMessageEventContent::text_plain(joke); + println!("{}:\t{}", m.sender, t.body); + if t.body.to_ascii_lowercase().contains("joke") { + let joke = match get_joke(http_client).await { + Ok(joke) => joke, + Err(_) => "I thought of a joke... but I just forgot it.".to_owned(), + }; + let joke_content = RoomMessageEventContent::text_plain(joke); - let txn_id = TransactionId::new(); - let req = send_message_event::v3::Request::new( - room_id.to_owned(), - txn_id, - &joke_content, - )?; - // Do nothing if we can't send the message. - let _ = matrix_client.send_request(req).await; - } + let txn_id = TransactionId::new(); + let req = + send_message_event::v3::Request::new(room_id.to_owned(), txn_id, &joke_content)?; + // Do nothing if we can't send the message. + let _ = matrix_client.send_request(req).await; } } diff --git a/message_log/src/main.rs b/message_log/src/main.rs index c732fa2..42e2206 100644 --- a/message_log/src/main.rs +++ b/message_log/src/main.rs @@ -4,9 +4,8 @@ use ruma::{ api::client::{filter::FilterDefinition, sync::sync_events}, assign, events::{ - AnySyncMessageLikeEvent, AnySyncTimelineEvent, OriginalSyncMessageLikeEvent, - SyncMessageLikeEvent, - room::message::{MessageType, RoomMessageEventContent, TextMessageEventContent}, + AnySyncMessageLikeEvent, AnySyncTimelineEvent, SyncMessageLikeEvent, + room::message::MessageType, }, presence::PresenceState, }; @@ -51,21 +50,15 @@ async fn log_messages( { // Filter out the text messages if let AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage( - SyncMessageLikeEvent::Original(OriginalSyncMessageLikeEvent { - content: - RoomMessageEventContent { - msgtype: - MessageType::Text(TextMessageEventContent { - body: msg_body, .. - }), - .. - }, - sender, - .. - }), + SyncMessageLikeEvent::Original(m), )) = event + && let MessageType::Text(t) = m.content.msgtype { - println!("{sender} in {room_id}: {msg_body}"); + println!( + "{sender} in {room_id}: {msg_body}", + sender = m.sender, + msg_body = t.body + ); } } }