@@ -84,6 +84,10 @@ def _make_request(
8484 data : Any = None ,
8585 ) -> StreamResponse :
8686 params = params or {}
87+ # Convert boolean values to lowercase strings for consistency with async implementation
88+ params = {
89+ k : str (v ).lower () if isinstance (v , bool ) else v for k , v in params .items ()
90+ }
8791 data = data or {}
8892 serialized = None
8993 default_params = self .get_default_params ()
@@ -94,7 +98,9 @@ def _make_request(
9498
9599 url = f"{ self .base_url } /{ relative_url } "
96100
97- if method .__name__ in ["post" , "put" , "patch" ]:
101+ if method .__name__ in ["post" , "put" , "patch" ] or (
102+ method .__name__ == "delete" and data
103+ ):
98104 serialized = json .dumps (data )
99105
100106 response = method (
@@ -119,8 +125,10 @@ def post(
119125 def get (self , relative_url : str , params : Dict = None ) -> StreamResponse :
120126 return self ._make_request (self .session .get , relative_url , params , None )
121127
122- def delete (self , relative_url : str , params : Dict = None ) -> StreamResponse :
123- return self ._make_request (self .session .delete , relative_url , params , None )
128+ def delete (
129+ self , relative_url : str , params : Dict = None , data : Any = None
130+ ) -> StreamResponse :
131+ return self ._make_request (self .session .delete , relative_url , params , data )
124132
125133 def patch (
126134 self , relative_url : str , params : Dict = None , data : Any = None
@@ -342,8 +350,24 @@ def update_message_partial(
342350 data .update (options )
343351 return self .put (f"messages/{ message_id } " , data = data )
344352
345- def delete_message (self , message_id : str , ** options : Any ) -> StreamResponse :
346- return self .delete (f"messages/{ message_id } " , options )
353+ def delete_message (
354+ self ,
355+ message_id : str ,
356+ delete_for_me : bool = False ,
357+ deleted_by : str = None ,
358+ ** options : Any ,
359+ ) -> StreamResponse :
360+ if delete_for_me and not deleted_by :
361+ raise ValueError ("deleted_by is required when delete_for_me is True" )
362+
363+ params = options .copy ()
364+ if delete_for_me :
365+ # Send in body with acting user for server-side auth compatibility
366+ body = {"delete_for_me" : True , "user" : {"id" : deleted_by }}
367+ return self .delete (f"messages/{ message_id } " , None , body )
368+ if deleted_by :
369+ params ["deleted_by" ] = deleted_by
370+ return self .delete (f"messages/{ message_id } " , params )
347371
348372 def undelete_message (self , message_id : str , user_id : str ) -> StreamResponse :
349373 return self .post (
0 commit comments