@@ -58,13 +58,33 @@ def format_tags(tags):
5858
5959class NostrEvent :
6060 """Simple wrapper for a Nostr event with rich details"""
61- def __init__ (self , event_obj ):
61+ def __init__ (self , event_obj , private_key = None ):
6262 self .event = event_obj
6363 self .created_at = event_obj .created_at
6464 self .content = event_obj .content
6565 self .public_key = event_obj .public_key
6666 self .kind = event_obj .kind
6767 self .tags = event_obj .tags if hasattr (event_obj , 'tags' ) else []
68+ self .private_key = private_key
69+ self .decrypted_content = None
70+
71+ # Try to decrypt if this is an encrypted DM
72+ if self .kind == 4 and self .private_key :
73+ self ._try_decrypt ()
74+
75+ def _try_decrypt (self ):
76+ """Attempt to decrypt encrypted DM content"""
77+ try :
78+ if self .kind == 4 and self .content :
79+ decrypted = self .private_key .decrypt_message (
80+ self .content ,
81+ self .public_key
82+ )
83+ self .decrypted_content = decrypted
84+ print (f"DEBUG: Successfully decrypted DM: { decrypted } " )
85+ except Exception as e :
86+ print (f"DEBUG: Failed to decrypt DM: { e } " )
87+ # Leave decrypted_content as None if decryption fails
6888
6989 def get_kind_name (self ):
7090 """Get human-readable name for this event's kind"""
@@ -78,16 +98,23 @@ def get_formatted_tags(self):
7898 """Get formatted tags for this event"""
7999 return format_tags (self .tags )
80100
101+ def get_display_content (self ):
102+ """Get the content to display (decrypted if available, otherwise raw)"""
103+ if self .decrypted_content is not None :
104+ return self .decrypted_content
105+ return self .content
106+
81107 def __str__ (self ):
82108 """Return formatted event details"""
83109 kind_name = self .get_kind_name ()
84110 timestamp = self .get_formatted_timestamp ()
85111 tags_str = self .get_formatted_tags ()
112+ display_content = self .get_display_content ()
86113
87114 # Build the formatted event string
88115 result = f"[{ kind_name } ] { timestamp } \n "
89- if self . content :
90- result += f"{ self . content } "
116+ if display_content :
117+ result += f"{ display_content } "
91118 if tags_str :
92119 result += f"\n { tags_str } "
93120
@@ -197,8 +224,8 @@ async def async_event_manager_task(self):
197224 event_created_at = event_msg .event .created_at
198225 print (f"Received at { time .localtime ()} a message with timestamp { event_created_at } after { time .ticks_ms ()- start_time } ms" )
199226 try :
200- # Create NostrEvent wrapper
201- nostr_event = NostrEvent (event_msg .event )
227+ # Create NostrEvent wrapper with private key for decryption
228+ nostr_event = NostrEvent (event_msg .event , self . private_key )
202229 print (f"DEBUG: Event content: { nostr_event .content } " )
203230
204231 # Add to event list
0 commit comments