From d9535eccf18eca0ed4a75b867e9f05d0be95058a Mon Sep 17 00:00:00 2001 From: timedout Date: Sat, 9 May 2026 18:17:00 +0100 Subject: [PATCH] feat: Make `!admin debug get-pdu` more informative --- src/admin/debug/commands.rs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/admin/debug/commands.rs b/src/admin/debug/commands.rs index 903146532..83763ea3e 100644 --- a/src/admin/debug/commands.rs +++ b/src/admin/debug/commands.rs @@ -6,24 +6,24 @@ use std::{ }; use conduwuit::{ - Err, Result, debug_error, err, info, - matrix::{ - Event, + debug_error, err, info, matrix::{ pdu::{PduEvent, PduId, RawPduId}, - }, - trace, utils, + Event, + }, trace, + utils, utils::{ stream::{IterStream, ReadyExt}, string::EMPTY, - }, - warn, + }, warn, + Err, + Result, }; use futures::{FutureExt, StreamExt, TryStreamExt}; use lettre::message::Mailbox; use ruma::{ - CanonicalJsonObject, CanonicalJsonValue, EventId, OwnedEventId, OwnedRoomId, - OwnedRoomOrAliasId, OwnedServerName, RoomId, RoomVersionId, - api::federation::event::get_room_state, events::AnyStateEvent, serde::Raw, + api::federation::event::get_room_state, events::AnyStateEvent, serde::Raw, CanonicalJsonObject, CanonicalJsonValue, + EventId, OwnedEventId, OwnedRoomId, OwnedRoomOrAliasId, + OwnedServerName, RoomId, RoomVersionId, }; use service::rooms::{ short::{ShortEventId, ShortRoomId}, @@ -111,15 +111,21 @@ pub(super) async fn get_pdu(&self, event_id: OwnedEventId) -> Result { outlier = true; pdu_json = self.services.rooms.timeline.get_pdu_json(&event_id).await; } + let rejected = self.services.rooms.pdu_metadata.is_event_rejected(&event_id).await; + let soft_failed = self.services.rooms.pdu_metadata.is_event_soft_failed(&event_id).await; match pdu_json { | Err(_) => return Err!("PDU not found locally."), | Ok(json) => { let text = serde_json::to_string_pretty(&json)?; - let msg = if outlier { - "Outlier (Rejected / Soft Failed) PDU found in our database" + let msg = if rejected { + "Rejected PDU:" + } else if soft_failed { + "Soft-failed PDU:" + } else if outlier { + "Outlier PDU:" } else { - "PDU found in our database" + "PDU:" }; write!(self, "{msg}\n```json\n{text}\n```") },