diff --git a/src/database/rooms.rs b/src/database/rooms.rs
index 0abd2e79acfc0ad0a4eae0dd6fd8c99f7e38c54a..aff39ddadac0a6e6c7f30c8c7a147be9effea895 100644
--- a/src/database/rooms.rs
+++ b/src/database/rooms.rs
@@ -1477,17 +1477,18 @@ struct ExtractBody<'a> {
 
                     self.tokenids.insert_batch(&mut batch)?;
 
-                    if body.starts_with(&format!("@conduit:{}: ", db.globals.server_name()))
-                        && self
-                            .id_from_alias(
-                                <&RoomAliasId>::try_from(
-                                    format!("#admins:{}", db.globals.server_name()).as_str(),
-                                )
-                                .expect("#admins:server_name is a valid room alias"),
-                            )?
-                            .as_ref()
-                            == Some(&pdu.room_id)
-                    {
+                    let admin_room = self.id_from_alias(
+                        <&RoomAliasId>::try_from(
+                            format!("#admins:{}", db.globals.server_name()).as_str(),
+                        )
+                        .expect("#admins:server_name is a valid room alias"),
+                    )?;
+                    let server_user = format!("@conduit:{}", db.globals.server_name());
+
+                    let to_conduit = body.starts_with(&format!("{}: ", server_user));
+                    let from_conduit = pdu.sender == server_user;
+
+                    if to_conduit && !from_conduit && admin_room.as_ref() == Some(&pdu.room_id) {
                         db.admin.process_message(body.to_string());
                     }
                 }