Skip to content
Extraits de code Groupes Projets
Vérifiée Valider 059a1080 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Get important information on messages in joined rooms

parent 42e9d771
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,15 +6,52 @@ use matrix_sdk::{
room::Room,
ruma::{
events::{
macros::EventContent, push_rules::PushRulesEvent, room::message::MessageEventContent,
room::topic::TopicEventContent, AnyRoomEvent, AnySyncRoomEvent, StateEvent,
SyncMessageEvent, SyncStateEvent,
macros::EventContent,
push_rules::PushRulesEvent,
room::message::{MessageEventContent, MessageType, TextMessageEventContent},
room::topic::TopicEventContent,
AnyRoomEvent, AnySyncRoomEvent, StateEvent, SyncMessageEvent, SyncStateEvent,
},
Int, MilliSecondsSinceUnixEpoch, UserId,
},
Client, LoopCtrl, Result, RoomInfo, SyncSettings,
};
async fn on_room_message(
ev: SyncMessageEvent<MessageEventContent>,
room: Room,
_encryption_info: Option<EncryptionInfo>,
) {
if let Room::Joined(room) = room {
let room_name = match room.name() {
Some(n) => "<".to_string() + &n + ">",
None => "<--none-->".to_string(),
};
let read_receipt = match room.user_read_receipt(room.own_user_id()).await {
Ok(Some((_ev_id, _receipt))) => "receipt".to_string(),
Err(e) => e.to_string(),
Ok(None) => "None".to_string(),
};
let body = match ev.content.msgtype {
MessageType::Text(TextMessageEventContent { body, .. }) => "Text: ".to_string() + &body,
_ => "Unsupported type".to_string(),
};
println!(
"===\n\
JOINED-ROOM: {}\n\
ROOM-NAME: {}\n\
READ-RECEIPT: {}\n\
FROM: {}\n\
MSG: {}",
room.room_id(),
room_name,
read_receipt,
ev.sender,
body
);
}
}
pub async fn connect_and_handle(config: Config) -> Result<()> {
let alice = UserId::try_from(config.user_name)?;
let client = Client::new(config.homeserver_url)?;
......@@ -34,18 +71,7 @@ pub async fn connect_and_handle(config: Config) -> Result<()> {
client.sync_once(SyncSettings::default()).await?;
// https://docs.rs/ruma/0.4.0/ruma/events/enum.AnySyncMessageEvent.html
client
.register_event_handler(
|ev: SyncMessageEvent<MessageEventContent>,
room: Room,
encryption_info: Option<EncryptionInfo>| async move {
println!(
"---\nROOM: {:?}\nENC: {:?}\nSME: {:?}",
room, encryption_info, ev
);
},
)
.await;
client.register_event_handler(on_room_message).await;
println!("Entering sync loop");
let token = client.sync_token().await.unwrap();
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter