feat: Make !admin debug get-pdu more informative

This commit is contained in:
timedout
2026-05-25 17:18:24 +01:00
parent a97f91e079
commit d9535eccf1
+19 -13
View File
@@ -6,24 +6,24 @@ use std::{
}; };
use conduwuit::{ use conduwuit::{
Err, Result, debug_error, err, info, debug_error, err, info, matrix::{
matrix::{
Event,
pdu::{PduEvent, PduId, RawPduId}, pdu::{PduEvent, PduId, RawPduId},
}, Event,
trace, utils, }, trace,
utils,
utils::{ utils::{
stream::{IterStream, ReadyExt}, stream::{IterStream, ReadyExt},
string::EMPTY, string::EMPTY,
}, }, warn,
warn, Err,
Result,
}; };
use futures::{FutureExt, StreamExt, TryStreamExt}; use futures::{FutureExt, StreamExt, TryStreamExt};
use lettre::message::Mailbox; use lettre::message::Mailbox;
use ruma::{ use ruma::{
CanonicalJsonObject, CanonicalJsonValue, EventId, OwnedEventId, OwnedRoomId, api::federation::event::get_room_state, events::AnyStateEvent, serde::Raw, CanonicalJsonObject, CanonicalJsonValue,
OwnedRoomOrAliasId, OwnedServerName, RoomId, RoomVersionId, EventId, OwnedEventId, OwnedRoomId, OwnedRoomOrAliasId,
api::federation::event::get_room_state, events::AnyStateEvent, serde::Raw, OwnedServerName, RoomId, RoomVersionId,
}; };
use service::rooms::{ use service::rooms::{
short::{ShortEventId, ShortRoomId}, short::{ShortEventId, ShortRoomId},
@@ -111,15 +111,21 @@ pub(super) async fn get_pdu(&self, event_id: OwnedEventId) -> Result {
outlier = true; outlier = true;
pdu_json = self.services.rooms.timeline.get_pdu_json(&event_id).await; 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 { match pdu_json {
| Err(_) => return Err!("PDU not found locally."), | Err(_) => return Err!("PDU not found locally."),
| Ok(json) => { | Ok(json) => {
let text = serde_json::to_string_pretty(&json)?; let text = serde_json::to_string_pretty(&json)?;
let msg = if outlier { let msg = if rejected {
"Outlier (Rejected / Soft Failed) PDU found in our database" "Rejected PDU:"
} else if soft_failed {
"Soft-failed PDU:"
} else if outlier {
"Outlier PDU:"
} else { } else {
"PDU found in our database" "PDU:"
}; };
write!(self, "{msg}\n```json\n{text}\n```") write!(self, "{msg}\n```json\n{text}\n```")
}, },