Skip to content

Commit 32f2929

Browse files
authored
Merge pull request #130 from Pycord-Development/context
Make InteractionContext an abc.Messageable
2 parents e5099e1 + 7bf8ff6 commit 32f2929

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

discord/abc.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
'GuildChannel',
6363
'Messageable',
6464
'Connectable',
65+
'Mentionable'
6566
)
6667

6768
T = TypeVar('T', bound=VoiceProtocol)
@@ -1141,6 +1142,7 @@ class Messageable:
11411142
- :class:`~discord.Member`
11421143
- :class:`~discord.ext.commands.Context`
11431144
- :class:`~discord.Thread`
1145+
- :class:`~discord.ApplicationContext`
11441146
"""
11451147

11461148
__slots__ = ()
@@ -1690,4 +1692,4 @@ async def connect(
16901692

16911693
class Mentionable:
16921694
# TODO: documentation, methods if needed
1693-
pass
1695+
pass

discord/app/context.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,21 @@
2424

2525
from typing import TYPE_CHECKING, Optional, Union
2626

27+
import discord.abc
28+
2729
if TYPE_CHECKING:
2830
import discord
31+
from discord.state import ConnectionState
2932

3033
from ..guild import Guild
3134
from ..interactions import Interaction, InteractionResponse
3235
from ..member import Member
3336
from ..message import Message
3437
from ..user import User
3538
from ..utils import cached_property
36-
from ..context_managers import Typing
3739

3840

39-
class ApplicationContext:
41+
class ApplicationContext(discord.abc.Messageable):
4042
"""Represents a Discord interaction context.
4143
4244
This class is not created manually and is instead passed to application
@@ -58,6 +60,10 @@ def __init__(self, bot: "discord.Bot", interaction: Interaction):
5860
self.bot = bot
5961
self.interaction = interaction
6062
self.command = None
63+
self._state: ConnectionState = self.interaction._state
64+
65+
async def _get_channel(self) -> discord.abc.Messageable:
66+
return self.channel
6167

6268
@cached_property
6369
def channel(self):
@@ -87,9 +93,6 @@ def user(self) -> Optional[Union[Member, User]]:
8793
def voice_client(self):
8894
return self.guild.voice_client
8995

90-
def typing(self):
91-
return Typing(self.channel)
92-
9396
@cached_property
9497
def response(self) -> InteractionResponse:
9598
return self.interaction.response
@@ -100,11 +103,6 @@ def response(self) -> InteractionResponse:
100103
def respond(self):
101104
return self.followup.send if self.response.is_done() else self.interaction.response.send_message
102105

103-
@property
104-
def send(self):
105-
"""Behaves like :attr:`~discord.abc.Messagable.send` if the response is done, else behaves like :attr:`~discord.app.ApplicationContext.respond`"""
106-
return self.channel.send if self.response.is_done() else self.respond
107-
108106
@property
109107
def defer(self):
110108
return self.interaction.response.defer

0 commit comments

Comments
 (0)