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

Don't respond to own messages...

parent 059a1080
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -10,7 +10,8 @@ use matrix_sdk::{
push_rules::PushRulesEvent,
room::message::{MessageEventContent, MessageType, TextMessageEventContent},
room::topic::TopicEventContent,
AnyRoomEvent, AnySyncRoomEvent, StateEvent, SyncMessageEvent, SyncStateEvent,
AnyMessageEventContent, AnyRoomEvent, AnySyncRoomEvent, StateEvent, SyncMessageEvent,
SyncStateEvent,
},
Int, MilliSecondsSinceUnixEpoch, UserId,
},
......@@ -22,16 +23,15 @@ async fn on_room_message(
room: Room,
_encryption_info: Option<EncryptionInfo>,
) {
let sender_id = ev.sender;
let own_id = room.own_user_id();
if sender_id.as_str() == own_id.as_str() { return; }
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(),
......@@ -40,23 +40,30 @@ async fn on_room_message(
"===\n\
JOINED-ROOM: {}\n\
ROOM-NAME: {}\n\
READ-RECEIPT: {}\n\
FROM: {}\n\
MSG: {}",
room.room_id(),
room_name,
read_receipt,
ev.sender,
sender_id,
body
);
let content =
AnyMessageEventContent::RoomMessage(MessageEventContent::text_plain("Hello world"));
room.send(content, None).await.unwrap();
}
}
fn log_joined_rooms(client: &Client) {
for room in client.joined_rooms() {
println!("Got joined room: <{}>", room.name().unwrap());
}
}
pub async fn connect_and_handle(config: Config) -> Result<()> {
let alice = UserId::try_from(config.user_name)?;
let client = Client::new(config.homeserver_url)?;
// Login
client
.login(
alice.localpart(),
......@@ -67,10 +74,9 @@ pub async fn connect_and_handle(config: Config) -> Result<()> {
.await?;
println!("Logged as: {}", alice);
// Don't respond to old messages
client.sync_once(SyncSettings::default()).await?;
log_joined_rooms(&client);
// https://docs.rs/ruma/0.4.0/ruma/events/enum.AnySyncMessageEvent.html
client.register_event_handler(on_room_message).await;
println!("Entering sync loop");
......
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