diff --git a/packages/matrix-bot-common/src/base/base-matrix.service.ts b/packages/matrix-bot-common/src/base/base-matrix.service.ts index 40e12806a..77a3bb3e4 100644 --- a/packages/matrix-bot-common/src/base/base-matrix.service.ts +++ b/packages/matrix-bot-common/src/base/base-matrix.service.ts @@ -170,6 +170,13 @@ export abstract class BaseMatrixService implements OnModuleInit, OnModuleDestroy return localpart.includes('-bot') || localpart.endsWith('bot'); } + /** + * Check if event is an edit (message replacement) + */ + protected isEditEvent(event: MatrixRoomEvent): boolean { + return event.content?.['m.relates_to']?.rel_type === 'm.replace'; + } + /** * Handle incoming room message */ @@ -180,6 +187,9 @@ export abstract class BaseMatrixService implements OnModuleInit, OnModuleDestroy // Ignore messages from other bots to prevent infinite loops if (this.isBot(event.sender)) return; + // Ignore edit events (message replacements) to prevent duplicate responses + if (this.isEditEvent(event)) return; + // Check room permissions if (this.allowedRooms.length > 0 && !this.allowedRooms.includes(roomId)) { return;