1818# Rule channel keys:
1919# room_id – Matrix room ID, e.g. "!abc123:matrix.org"
2020
21- from drivers .registry import register
21+ from pathlib import Path
22+ from typing import cast
23+
24+ from aiohttp import ClientSession , TCPConnector
25+ from aiohttp_socks import ProxyConnector
26+ from mautrix .api import HTTPAPI
2227from mautrix .client import Client
2328from mautrix .client .syncer import EventHandler
29+ from mautrix .crypto import OlmMachine
2430from mautrix .types import (
2531 AudioInfo ,
2632 ContentURI ,
3844 UserID ,
3945 VideoInfo ,
4046)
41- from mautrix .api import HTTPAPI
42- from mautrix .crypto import OlmMachine
43- from typing import cast
44- from aiohttp import ClientSession , TCPConnector
45- from aiohttp_socks import ProxyConnector
46- from pathlib import Path
47-
4847from pydantic import model_validator
4948
5049import services .logger as log
51- import services .media as media
52- from services .message import Attachment , NormalizedMessage
53- from services .config_schema import _DriverConfig
54- from services .config import get_proxy , UNSET
5550from drivers import BaseDriver
51+ from drivers .registry import register
52+ from services import media
53+ from services .config import UNSET , get_proxy
54+ from services .config_schema import _DriverConfig
55+ from services .message import Attachment , NormalizedMessage
5656
5757
5858class MatrixConfig (_DriverConfig ):
@@ -152,9 +152,10 @@ async def start(self):
152152 if self .config .enable_e2e :
153153 try :
154154 from contextlib import asynccontextmanager
155+
156+ from mautrix .client .state_store import MemoryStateStore
155157 from mautrix .crypto import StateStore
156158 from mautrix .crypto .store import MemoryCryptoStore
157- from mautrix .client .state_store import MemoryStateStore
158159
159160 # Create a custom CryptoStore that overrides the transaction() method
160161 class CustomCryptoStore (MemoryCryptoStore ):
@@ -283,13 +284,13 @@ async def _get_profile(self, user_id: str) -> tuple[str, str]:
283284 name = await self ._client .get_displayname (UserID (user_id ))
284285 if name :
285286 display_name = name
286- except Exception :
287+ except Exception : # noqa: S110
287288 pass
288289 try :
289290 mxc = await self ._client .get_avatar_url (UserID (user_id ))
290291 if mxc :
291292 avatar_url = self ._mxc_to_http (str (mxc ))
292- except Exception :
293+ except Exception : # noqa: S110
293294 pass
294295 return display_name , avatar_url
295296
@@ -311,21 +312,27 @@ async def _on_encrypted_message(self, event) -> None:
311312
312313 # Convert to a regular MessageEvent and process
313314 if decrypted_event :
314- # Create a mock MessageEvent with the decrypted content
315- from mautrix .types import MessageEvent , RoomID , UserID
316-
317- # Create a new event with decrypted content
318- decrypted_msg_event = MessageEvent (
319- content = decrypted_event ,
320- type = EventType .ROOM_MESSAGE ,
321- room_id = RoomID (event .room_id ),
322- event_id = event .event_id ,
323- sender = UserID (event .sender ),
324- timestamp = event .timestamp ,
325- )
326-
327- # Process the decrypted message
328- await self ._on_message (decrypted_msg_event )
315+ # Create a mock MessageEvent with the decrypted message content.
316+ decrypted_content = getattr (decrypted_event , "content" , None )
317+ if isinstance (
318+ decrypted_content ,
319+ (TextMessageEventContent , MediaMessageEventContent ),
320+ ):
321+ from mautrix .types import MessageEvent , RoomID , UserID
322+
323+ decrypted_msg_event = MessageEvent (
324+ content = decrypted_content ,
325+ type = EventType .ROOM_MESSAGE ,
326+ room_id = RoomID (event .room_id ),
327+ event_id = event .event_id ,
328+ sender = UserID (event .sender ),
329+ timestamp = event .timestamp ,
330+ )
331+ await self ._on_message (decrypted_msg_event )
332+ else :
333+ logger .warning (
334+ f"Matrix [{ self .instance_id } ] unsupported decrypted content type"
335+ )
329336 else :
330337 logger .warning (f"Matrix [{ self .instance_id } ] Failed to decrypt event" )
331338 except Exception as e :
0 commit comments