4747 InvalidArgument ,
4848 NotFound ,
4949)
50+ from ..file import VoiceMessage
5051from ..flags import MessageFlags
5152from ..http import Route
5253from ..message import Attachment , Message
@@ -507,13 +508,17 @@ def create_interaction_response(
507508 attachments = []
508509 files = files or []
509510 for index , file in enumerate (files ):
510- attachments .append (
511- {
512- "id" : index ,
513- "filename" : file .filename ,
514- "description" : file .description ,
515- }
516- )
511+ attachment_info = {
512+ "id" : index ,
513+ "filename" : file .filename ,
514+ "description" : file .description ,
515+ }
516+ if isinstance (file , VoiceMessage ):
517+ attachment_info .update (
518+ waveform = file .waveform ,
519+ duration_secs = file .duration_secs ,
520+ )
521+ attachments .append (attachment_info )
517522 form .append (
518523 {
519524 "name" : f"files[{ index } ]" ,
@@ -522,7 +527,7 @@ def create_interaction_response(
522527 "content_type" : "application/octet-stream" ,
523528 }
524529 )
525- payload ["attachments" ] = attachments
530+ payload ["data" ][ " attachments" ] = attachments
526531 form [0 ]["value" ] = utils ._to_json (payload )
527532
528533 route = Route (
@@ -658,8 +663,10 @@ def handle_message_parameters(
658663 if username :
659664 payload ["username" ] = username
660665
661- flags = MessageFlags (suppress_embeds = suppress , ephemeral = ephemeral )
662- payload ["flags" ] = flags .value
666+ flags = MessageFlags (
667+ suppress_embeds = suppress ,
668+ ephemeral = ephemeral ,
669+ )
663670
664671 if applied_tags is not MISSING :
665672 payload ["applied_tags" ] = applied_tags
@@ -680,6 +687,7 @@ def handle_message_parameters(
680687 files = [file ]
681688
682689 if files :
690+ voice_message = False
683691 for index , file in enumerate (files ):
684692 multipart_files .append (
685693 {
@@ -689,17 +697,26 @@ def handle_message_parameters(
689697 "content_type" : "application/octet-stream" ,
690698 }
691699 )
692- _attachments .append (
693- {
694- "id" : index ,
695- "filename" : file .filename ,
696- "description" : file .description ,
697- }
698- )
700+ attachment_info = {
701+ "id" : index ,
702+ "filename" : file .filename ,
703+ "description" : file .description ,
704+ }
705+ if isinstance (file , VoiceMessage ):
706+ voice_message = True
707+ attachment_info .update (
708+ waveform = file .waveform ,
709+ duration_secs = file .duration_secs ,
710+ )
711+ _attachments .append (attachment_info )
712+ if voice_message :
713+ flags = flags + MessageFlags (is_voice_message = True )
699714
700715 if _attachments :
701716 payload ["attachments" ] = _attachments
702717
718+ payload ["flags" ] = flags .value
719+
703720 if multipart_files :
704721 multipart .append ({"name" : "payload_json" , "value" : utils ._to_json (payload )})
705722 payload = None
0 commit comments