From 069dec2b9d0b5446dff27a91bbe3da2264e7343c Mon Sep 17 00:00:00 2001 From: gnuxie Date: Fri, 12 Jan 2024 20:07:20 +0000 Subject: [PATCH] Update for MPS 0.9.1. --- src/protections/FirstMessageIsImage.ts | 5 ++++- src/protections/MessageIsMedia.ts | 3 +++ src/protections/MessageIsVoice.ts | 2 +- src/protections/WordList.ts | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/protections/FirstMessageIsImage.ts b/src/protections/FirstMessageIsImage.ts index 65922dde..1b7ddd93 100644 --- a/src/protections/FirstMessageIsImage.ts +++ b/src/protections/FirstMessageIsImage.ts @@ -82,7 +82,10 @@ export class FirstMessageIsImageProtection extends AbstractProtection implements const roomID = room.toRoomIDOrAlias(); if (!this.justJoined[roomID]) this.justJoined[roomID] = []; if (Value.Check(RoomMessage, event)) { - const msgtype = event.content?.['msgtype'] || 'm.text'; + if (!('msgtype' in event.content)) { + return Ok(undefined); + } + const msgtype = event.content['msgtype'] || 'm.text'; const formattedBody = event.content !== undefined && 'formatted_body' in event.content ? event.content?.['formatted_body'] || '' : ''; const isMedia = msgtype === 'm.image' || msgtype === 'm.video' || formattedBody.toLowerCase().includes('> { if (Value.Check(RoomMessage, event)) { + if (!('msgtype' in event.content)) { + return Ok(undefined); + } const msgtype = event.content?.['msgtype'] || 'm.text'; const formattedBody = event.content !== undefined && 'formatted_body' in event.content ? event.content?.['formatted_body'] || '' : ''; const isMedia = msgtype === 'm.image' || msgtype === 'm.video' || formattedBody.toLowerCase().includes('> { const roomID = room.toRoomIDOrAlias(); if (Value.Check(RoomMessage, event)) { - if (event.content?.msgtype !== 'm.audio') { + if (!('msgtype' in event.content) || event.content?.msgtype !== 'm.audio') { return Ok(undefined); } await this.draupnir.managementRoomOutput.logMessage(LogLevel.INFO, "MessageIsVoice", `Redacting event from ${event['sender']} for posting a voice message. ${Permalinks.forEvent(roomID, event['event_id'], [serverName(this.draupnir.clientUserID)])}`); diff --git a/src/protections/WordList.ts b/src/protections/WordList.ts index f3dbc778..3c20a0ce 100644 --- a/src/protections/WordList.ts +++ b/src/protections/WordList.ts @@ -88,6 +88,9 @@ export class WordListProtection extends AbstractProtection implements Protection public async handleTimelineEvent(room: MatrixRoomID, event: RoomEvent): Promise> { const minsBeforeTrusting = this.draupnir.config.protections.wordlist.minutesBeforeTrusting; if (Value.Check(RoomMessage, event)) { + if (!('msgtype' in event.content)) { + return Ok(undefined); + } const message = (event.content !== undefined && 'formatted_body' in event.content && event.content?.['formatted_body']) || event.content?.['body']; if (!message === undefined) { return Ok(undefined);