22import logging
33import warnings
44from abc import ABC , abstractmethod
5- from typing import Awaitable , Callable , List , Optional , TypeVar , Union
5+ from typing import Awaitable , Callable , Dict , List , Optional , Sequence , TypeVar , Union
66
77import discord
88from discord import Embed , Interaction
@@ -33,7 +33,11 @@ async def send_message(
3333 silent : bool = False ,
3434 delete_after : Optional [float ] = None ,
3535 poll : Union [discord .Poll , _MissingSentinel ] = MISSING ,
36- ) -> None :
36+ ) -> Optional [
37+ Union [
38+ discord .interactions .InteractionMessage , discord .webhook .async_ .WebhookMessage
39+ ]
40+ ]:
3741 if msg is not None :
3842 warnings .warn (
3943 "`msg` is deprecated, use `content` instead" ,
@@ -44,41 +48,43 @@ async def send_message(
4448 if content is None :
4549 content = msg
4650
47- if not interaction .is_expired ():
48- if not interaction .response .is_done ():
49- await interaction .response .send_message (
50- content = content ,
51- embed = embed ,
52- embeds = embeds ,
53- file = file ,
54- files = files ,
55- view = view ,
56- tts = tts ,
57- ephemeral = ephemeral ,
58- allowed_mentions = allowed_mentions ,
59- suppress_embeds = suppress_embeds ,
60- silent = silent ,
61- delete_after = delete_after ,
62- poll = poll ,
63- )
64- else :
65- await interaction .followup .send (
66- content = content ,
67- embed = embed ,
68- embeds = embeds ,
69- file = file ,
70- files = files ,
71- view = view ,
72- tts = tts ,
73- ephemeral = ephemeral ,
74- allowed_mentions = allowed_mentions ,
75- suppress_embeds = suppress_embeds ,
76- silent = silent ,
77- delete_after = delete_after ,
78- poll = poll ,
79- )
80- else :
51+ if interaction .is_expired ():
8152 logger .warning ("Interaction is expired. Skipping send_message()." )
53+ return None
54+
55+ if interaction .response .is_done ():
56+ return await interaction .followup .send (
57+ content = content ,
58+ embed = embed ,
59+ embeds = embeds ,
60+ file = file ,
61+ files = files ,
62+ view = view ,
63+ tts = tts ,
64+ ephemeral = ephemeral ,
65+ allowed_mentions = allowed_mentions ,
66+ suppress_embeds = suppress_embeds ,
67+ silent = silent ,
68+ poll = poll ,
69+ )
70+
71+ await interaction .response .send_message (
72+ content = content ,
73+ embed = embed ,
74+ embeds = embeds ,
75+ file = file ,
76+ files = files ,
77+ view = view ,
78+ tts = tts ,
79+ ephemeral = ephemeral ,
80+ allowed_mentions = allowed_mentions ,
81+ suppress_embeds = suppress_embeds ,
82+ silent = silent ,
83+ delete_after = delete_after ,
84+ poll = poll ,
85+ )
86+
87+ return await interaction .original_response ()
8288
8389
8490async def send_error (
0 commit comments