mrsbfh

Matrix-Rust-SDK-Bot-Framework-Helper
git clone git://archive.git.mtrnord.blog/MTRNord/mrsbfh.git
Log | Files | Refs | README

commit d7ca0ac94f9ac467f54f4e3d7967fbd5e6955f21
parent 14048cf9b242f9e3d33aad8e3cd1300c8a563bee
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu,  7 Jan 2021 19:40:14 +0100

refactor: Bump sdk and tokio

Diffstat:
MREADME.md | 16+++++++++++++++-
Mexample-bot/Cargo.toml | 6+++++-
Mexample-bot/src/commands/hello_world.rs | 4++--
Mexample-bot/src/matrix/mod.rs | 5++---
Mexample-bot/src/matrix/sync.rs | 4++--
Mmrsbfh-macros/src/lib.rs | 18+++++++++---------
Mmrsbfh/Cargo.toml | 9++-------
Mmrsbfh/src/lib.rs | 2--
8 files changed, 37 insertions(+), 27 deletions(-)

diff --git a/README.md b/README.md @@ -1,3 +1,17 @@ # MRSBFH - Matrix-Rust-SDK-Bot-Framework-Helper -A toolkit for writing commandbots more efficent in rust for matrix. +A toolkit for writing commandbots more efficient in rust for matrix. + +## How to use + +To use it you need to add mrsbfh ust like any regular create: + +``` +mrsbfh = {git = "https://github.com/MTRNord/mrsbfh"} +``` + +After that there are the possible helpers available that are further described in the docs. + +As there was no release yet, you can open them using `cargo doc -p mrsbfh --open` in any crate depending on it or after cloning the repository. + +For a minimal example of the bot checkout the crate under the `example-bot` folder which is a minimal version of what is needed. diff --git a/example-bot/Cargo.toml b/example-bot/Cargo.toml @@ -6,12 +6,16 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[dependencies.matrix-sdk] +git = "https://github.com/matrix-org/matrix-rust-sdk.git" +rev = "b311a31c9ef942c357ceb16f07586246655191ce" + [dependencies] mrsbfh = {path = "../mrsbfh"} serde = "1.0" tracing = "0.1" tracing-subscriber = "0.2" tracing-futures = "0.2.4" -tokio = { version = "0.2", features = ["full"] } +tokio = { version = "1.0.1", features = ["full"] } clap = "3.0.0-beta.2" async-trait = "0.1.41" \ No newline at end of file diff --git a/example-bot/src/commands/hello_world.rs b/example-bot/src/commands/hello_world.rs @@ -1,11 +1,11 @@ +use matrix_sdk::events::{room::message::MessageEventContent, AnyMessageEventContent}; use mrsbfh::commands::command; use mrsbfh::config::Config; -use mrsbfh::matrix_sdk::events::{room::message::MessageEventContent, AnyMessageEventContent}; use std::error::Error; #[command(help = "`!hello_world` - Prints \"hello world\".")] pub async fn hello_world<C: Config>( - mut tx: mrsbfh::Sender, + tx: mrsbfh::Sender, _config: C, _sender: String, mut _args: Vec<&str>, diff --git a/example-bot/src/matrix/mod.rs b/example-bot/src/matrix/mod.rs @@ -1,5 +1,5 @@ use crate::config::Config; -use mrsbfh::matrix_sdk::{Client, ClientConfig, Session as SDKSession, SyncSettings}; +use matrix_sdk::{Client, ClientConfig, Session as SDKSession, SyncSettings}; use mrsbfh::url::Url; use mrsbfh::utils::Session; use std::convert::TryFrom; @@ -30,8 +30,7 @@ pub async fn setup(config: Config<'_>) -> Result<Client, Box<dyn Error>> { let session = SDKSession { access_token: session.access_token, device_id: session.device_id.into(), - user_id: mrsbfh::matrix_sdk::identifiers::UserId::try_from(session.user_id.as_str()) - .unwrap(), + user_id: matrix_sdk::identifiers::UserId::try_from(session.user_id.as_str()).unwrap(), }; if let Err(e) = client.restore_login(session).await { diff --git a/example-bot/src/matrix/sync.rs b/example-bot/src/matrix/sync.rs @@ -1,13 +1,13 @@ use crate::commands::match_command; use crate::config::Config; -use mrsbfh::matrix_sdk::{ +use matrix_sdk::async_trait; +use matrix_sdk::{ events::{ room::member::MemberEventContent, room::message::MessageEventContent, StrippedStateEvent, SyncMessageEvent, }, Client, EventEmitter, SyncRoom, }; -use mrsbfh::matrix_sdk_common_macros::async_trait; use tokio::sync::mpsc; use tracing::*; diff --git a/mrsbfh-macros/src/lib.rs b/mrsbfh-macros/src/lib.rs @@ -141,8 +141,8 @@ pub fn command_generate(args: TokenStream, input: TokenStream) -> TokenStream { let owned_html = html.to_owned(); mrsbfh::tokio::spawn(async move { - let content = mrsbfh::matrix_sdk::events::AnyMessageEventContent::RoomMessage( - mrsbfh::matrix_sdk::events::room::message::MessageEventContent::notice_html( + let content = matrix_sdk::events::AnyMessageEventContent::RoomMessage( + matrix_sdk::events::room::message::MessageEventContent::notice_html( HELP_MARKDOWN, owned_html, ), @@ -223,7 +223,7 @@ pub fn autojoin(_: TokenStream, input: TokenStream) -> TokenStream { for item in items { if let syn::ImplItem::Method(method) = item { - if method.sig.ident.to_string() == "on_stripped_state_member" { + if method.sig.ident == "on_stripped_state_member" { let original = method.block.clone(); let new_block = syn::parse_quote! { { @@ -234,7 +234,7 @@ pub fn autojoin(_: TokenStream, input: TokenStream) -> TokenStream { warn!("Got invite that isn't for us"); return; } - if let mrsbfh::matrix_sdk::SyncRoom::Invited(room) = room { + if let matrix_sdk::SyncRoom::Invited(room) = room { let room_id = { let room = room.read().await; room.room_id.clone() @@ -254,7 +254,7 @@ pub fn autojoin(_: TokenStream, input: TokenStream) -> TokenStream { 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 { @@ -304,16 +304,16 @@ pub fn commands(_: TokenStream, input: TokenStream) -> TokenStream { for item in items { if let syn::ImplItem::Method(method) = item { - if method.sig.ident.to_string() == "on_room_message" { + if method.sig.ident == "on_room_message" { let original = method.block.clone(); let new_block = syn::parse_quote! { { #original // Command matching logic - if let mrsbfh::matrix_sdk::SyncRoom::Joined(room) = room { - let msg_body = if let mrsbfh::matrix_sdk::events::SyncMessageEvent { - content: mrsbfh::matrix_sdk::events::room::message::MessageEventContent::Text(mrsbfh::matrix_sdk::events::room::message::TextMessageEventContent { body: msg_body, .. }), + if let matrix_sdk::SyncRoom::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, .. }), .. } = event { diff --git a/mrsbfh/Cargo.toml b/mrsbfh/Cargo.toml @@ -8,12 +8,7 @@ edition = "2018" [dependencies.matrix-sdk] git = "https://github.com/matrix-org/matrix-rust-sdk.git" -#rev = "d4327d4cfcc0aa2dfb3d0c59cc55bc03634b5977" -branch = "fix-signatures" -[dependencies.matrix-sdk-common-macros] -git = "https://github.com/matrix-org/matrix-rust-sdk.git" -#rev = "d4327d4cfcc0aa2dfb3d0c59cc55bc03634b5977" -branch = "fix-signatures" +rev = "b311a31c9ef942c357ceb16f07586246655191ce" [dependencies] url = "2.1.1" @@ -22,7 +17,7 @@ url = "2.1.1" mrsbfh-macros = {path = "../mrsbfh-macros"} const-concat = {git = "https://github.com/Vurich/const-concat", rev = "f836e77a4ecadf6a11994340fdcbbdadcdc4906d"} -tokio = { version = "0.2", features = ["full"] } +tokio = { version = "1.0.1", features = ["full"] } tracing = "0.1" serde = "1.0" diff --git a/mrsbfh/src/lib.rs b/mrsbfh/src/lib.rs @@ -5,8 +5,6 @@ pub mod utils; pub type Sender = tokio::sync::mpsc::Sender<matrix_sdk::events::AnyMessageEventContent>; pub use const_concat; -pub use matrix_sdk; -pub use matrix_sdk_common_macros; pub use pulldown_cmark; pub use serde_yaml; pub use tokio;