commit 0add5a53852ee976b5f9e108225a233d9bb57690
parent 8f4e269165091d6b9542f372410162f7fe34f61e
Author: MTRNord <mtrnord1@gmail.com>
Date: Wed, 8 Sep 2021 19:42:41 +0200
Update to matrix-sdk 0.3
Diffstat:
5 files changed, 35 insertions(+), 39 deletions(-)
diff --git a/example-bot/Cargo.toml b/example-bot/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies.matrix-sdk]
-version = "0.2"
+version = "0.3"
[dependencies]
mrsbfh = {path = "../mrsbfh"}
@@ -16,7 +16,7 @@ serde = "1.0"
tracing = "0.1"
tracing-subscriber = "0.2"
tracing-futures = "0.2.4"
-tokio = { version = "0.2", features = ["full"] }
+tokio = { version = "1", features = ["full"] }
clap = "=3.0.0-beta.2"
clap_derive = "=3.0.0-beta.2"
async-trait = "0.1.41"
diff --git a/example-bot/src/matrix/mod.rs b/example-bot/src/matrix/mod.rs
@@ -51,7 +51,7 @@ pub async fn setup(config: Config<'_>) -> Result<Client, Box<dyn Error>> {
Ok(login_response) => {
info!("Session: {:#?}", login_response);
let session = Session {
- homeserver: client.homeserver().to_string(),
+ homeserver: client.homeserver().await.to_string(),
user_id: login_response.user_id.to_string(),
access_token: login_response.access_token,
device_id: login_response.device_id.into(),
@@ -73,7 +73,7 @@ pub async fn start_sync(
config: Config<'static>,
) -> Result<(), Box<dyn Error>> {
client
- .add_event_emitter(Box::new(sync::Bot::new(client.clone(), config.clone())))
+ .set_event_handler(Box::new(sync::Bot::new(client.clone(), config.clone())))
.await;
info!("Starting full Sync...");
diff --git a/example-bot/src/matrix/sync.rs b/example-bot/src/matrix/sync.rs
@@ -6,7 +6,7 @@ use matrix_sdk::{
room::member::MemberEventContent, room::message::MessageEventContent, StrippedStateEvent,
SyncMessageEvent,
},
- Client, EventEmitter, SyncRoom,
+ Client, EventHandler, room::Room,
};
use tokio::sync::mpsc;
use tracing::*;
@@ -29,14 +29,14 @@ impl Bot {
#[mrsbfh::commands::commands]
#[mrsbfh::utils::autojoin]
#[async_trait]
-impl EventEmitter for Bot {
- async fn on_room_message(&self, room: SyncRoom, event: &SyncMessageEvent<MessageEventContent>) {
+impl EventHandler for Bot {
+ async fn on_room_message(&self, room: Room, event: &SyncMessageEvent<MessageEventContent>) {
println!("message example")
}
async fn on_stripped_state_member(
&self,
- room: SyncRoom,
+ room: Room,
room_member: &StrippedStateEvent<MemberEventContent>,
_: Option<MemberEventContent>,
) {
diff --git a/mrsbfh-macros/src/lib.rs b/mrsbfh-macros/src/lib.rs
@@ -103,10 +103,9 @@ pub fn command_generate(args: TokenStream, input: TokenStream) -> TokenStream {
});
let mut help_format_string = String::from("{}");
input.variants.iter().for_each(|_| {
- help_format_string = format!("{}{}", help_format_string,"{}");
+ help_format_string = format!("{}{}", help_format_string, "{}");
});
-
let bot_name = match get_arg(
input.span(),
args.clone(),
@@ -230,47 +229,41 @@ pub fn autojoin(_: TokenStream, input: TokenStream) -> TokenStream {
if method.sig.ident == "on_stripped_state_member" {
let original = method.block.clone();
let new_block = syn::parse_quote! {
- {
- #original
+ {
+ #original
- // Autojoin logic
- if room_member.state_key != self.client.user_id().await.unwrap() {
- warn!("Got invite that isn't for us");
- return;
- }
- if let matrix_sdk::SyncRoom::Invited(room) = room {
- let room_id = {
- let room = room.read().await;
- room.room_id.clone()
- };
- let client = self.client.clone();
-
- tokio::spawn(async move {
- info!("Autojoining room {}", room_id);
+ // Autojoin logic
+ if room_member.state_key != self.client.user_id().await.unwrap() {
+ warn!("Got invite that isn't for us");
+ return;
+ }
+ if let matrix_sdk::room::Room::Invited(room) = room {
+ info!("Autojoining room {}", room.room_id());
let mut delay = 2;
- while let Err(err) = client.join_room_by_id(&room_id).await {
+ while let Err(err) = room.accept_invitation().await {
// retry autojoin due to synapse sending invites, before the
// invited user can join for more information see
// https://github.com/matrix-org/synapse/issues/4345
error!(
"Failed to join room {} ({:?}), retrying in {}s",
- room_id, err, delay
+ room.room_id(),
+ err,
+ delay
);
- tokio::time::delay_for(tokio::time::Duration::from_secs(delay)).await;
+ tokio::time::sleep(tokio::time::Duration::from_secs(delay)).await;
delay *= 2;
if delay > 3600 {
- error!("Can't join room {} ({:?})", room_id, err);
+ error!("Can't join room {} ({:?})", room.room_id(), err);
break;
}
}
- info!("Successfully joined room {}", room_id);
- });
+ info!("Successfully joined room {}", room.room_id());
+ }
}
- }
- };
+ };
method.block = new_block;
}
}
@@ -315,9 +308,12 @@ pub fn commands(_: TokenStream, input: TokenStream) -> TokenStream {
#original
// Command matching logic
- if let matrix_sdk::SyncRoom::Joined(room) = room {
+ if let matrix_sdk::room::Room::Joined(room) = room {
let msg_body = if let matrix_sdk::events::SyncMessageEvent {
- content: matrix_sdk::events::room::message::MessageEventContent::Text(matrix_sdk::events::room::message::TextMessageEventContent { body: msg_body, .. }),
+ content: matrix_sdk::events::room::message::MessageEventContent {
+ msgtype: matrix_sdk::events::room::message::MessageType::Text(matrix_sdk::events::room::message::TextMessageEventContent { body: msg_body, .. }),
+ ..
+ },
..
} = event
{
@@ -332,7 +328,7 @@ pub fn commands(_: TokenStream, input: TokenStream) -> TokenStream {
let sender = event.sender.clone().to_string();
let (tx, mut rx) = mpsc::channel(100);
- let room_id = room.read().await.clone().room_id;
+ let room_id = room.room_id();
let cloned_config = self.config.clone();
let cloned_client = self.client.clone();
diff --git a/mrsbfh/Cargo.toml b/mrsbfh/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies.matrix-sdk]
-version = "0.2"
+version = "0.3"
[dependencies]
url = "2.2.1"
@@ -18,7 +18,7 @@ thiserror = "1.0"
# Command macros
mrsbfh-macros = {path = "../mrsbfh-macros", optional = true}
-tokio = { version = "0.2", features = ["full"] }
+tokio = { version = "1", features = ["full"] }
tracing = "0.1"
serde = "1.0"