47
47
InvalidArgument ,
48
48
NotFound ,
49
49
)
50
+ from ..file import VoiceMessage
50
51
from ..flags import MessageFlags
51
52
from ..http import Route
52
53
from ..message import Attachment , Message
@@ -507,13 +508,17 @@ def create_interaction_response(
507
508
attachments = []
508
509
files = files or []
509
510
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 )
517
522
form .append (
518
523
{
519
524
"name" : f"files[{ index } ]" ,
@@ -522,7 +527,7 @@ def create_interaction_response(
522
527
"content_type" : "application/octet-stream" ,
523
528
}
524
529
)
525
- payload ["attachments" ] = attachments
530
+ payload ["data" ][ " attachments" ] = attachments
526
531
form [0 ]["value" ] = utils ._to_json (payload )
527
532
528
533
route = Route (
@@ -658,8 +663,10 @@ def handle_message_parameters(
658
663
if username :
659
664
payload ["username" ] = username
660
665
661
- flags = MessageFlags (suppress_embeds = suppress , ephemeral = ephemeral )
662
- payload ["flags" ] = flags .value
666
+ flags = MessageFlags (
667
+ suppress_embeds = suppress ,
668
+ ephemeral = ephemeral ,
669
+ )
663
670
664
671
if applied_tags is not MISSING :
665
672
payload ["applied_tags" ] = applied_tags
@@ -680,6 +687,7 @@ def handle_message_parameters(
680
687
files = [file ]
681
688
682
689
if files :
690
+ voice_message = False
683
691
for index , file in enumerate (files ):
684
692
multipart_files .append (
685
693
{
@@ -689,17 +697,26 @@ def handle_message_parameters(
689
697
"content_type" : "application/octet-stream" ,
690
698
}
691
699
)
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 )
699
714
700
715
if _attachments :
701
716
payload ["attachments" ] = _attachments
702
717
718
+ payload ["flags" ] = flags .value
719
+
703
720
if multipart_files :
704
721
multipart .append ({"name" : "payload_json" , "value" : utils ._to_json (payload )})
705
722
payload = None
0 commit comments