mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Undo coercion of partial DMChannel to PartialMessageable
This commit is contained in:
parent
1c40d43fd1
commit
dc9c224b54
@ -1669,6 +1669,9 @@ class StoreChannel(discord.abc.GuildChannel, Hashable):
|
|||||||
await self._edit(options, reason=reason)
|
await self._edit(options, reason=reason)
|
||||||
|
|
||||||
|
|
||||||
|
DMC = TypeVar('DMC', bound='DMChannel')
|
||||||
|
|
||||||
|
|
||||||
class DMChannel(discord.abc.Messageable, Hashable):
|
class DMChannel(discord.abc.Messageable, Hashable):
|
||||||
"""Represents a Discord direct message channel.
|
"""Represents a Discord direct message channel.
|
||||||
|
|
||||||
@ -1692,8 +1695,10 @@ class DMChannel(discord.abc.Messageable, Hashable):
|
|||||||
|
|
||||||
Attributes
|
Attributes
|
||||||
----------
|
----------
|
||||||
recipient: :class:`User`
|
recipient: Optional[:class:`User`]
|
||||||
The user you are participating with in the direct message channel.
|
The user you are participating with in the direct message channel.
|
||||||
|
If this channel is received through the gateway, the recipient information
|
||||||
|
may not be always available.
|
||||||
me: :class:`ClientUser`
|
me: :class:`ClientUser`
|
||||||
The user presenting yourself.
|
The user presenting yourself.
|
||||||
id: :class:`int`
|
id: :class:`int`
|
||||||
@ -1704,7 +1709,7 @@ class DMChannel(discord.abc.Messageable, Hashable):
|
|||||||
|
|
||||||
def __init__(self, *, me: ClientUser, state: ConnectionState, data: DMChannelPayload):
|
def __init__(self, *, me: ClientUser, state: ConnectionState, data: DMChannelPayload):
|
||||||
self._state: ConnectionState = state
|
self._state: ConnectionState = state
|
||||||
self.recipient: User = state.store_user(data['recipients'][0])
|
self.recipient: Optional[User] = state.store_user(data['recipients'][0])
|
||||||
self.me: ClientUser = me
|
self.me: ClientUser = me
|
||||||
self.id: int = int(data['id'])
|
self.id: int = int(data['id'])
|
||||||
|
|
||||||
@ -1712,11 +1717,22 @@ class DMChannel(discord.abc.Messageable, Hashable):
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
|
if self.recipient:
|
||||||
return f'Direct Message with {self.recipient}'
|
return f'Direct Message with {self.recipient}'
|
||||||
|
return 'Direct Message with Unknown User'
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f'<DMChannel id={self.id} recipient={self.recipient!r}>'
|
return f'<DMChannel id={self.id} recipient={self.recipient!r}>'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _from_message(cls: Type[DMC], state: ConnectionState, channel_id: int) -> DMC:
|
||||||
|
self: DMC = cls.__new__(cls)
|
||||||
|
self._state = state
|
||||||
|
self.id = channel_id
|
||||||
|
self.recipient = None
|
||||||
|
self.me = state.user # type: ignore
|
||||||
|
return self
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def type(self) -> ChannelType:
|
def type(self) -> ChannelType:
|
||||||
""":class:`ChannelType`: The channel's Discord type."""
|
""":class:`ChannelType`: The channel's Discord type."""
|
||||||
|
@ -405,7 +405,7 @@ class ConnectionState:
|
|||||||
try:
|
try:
|
||||||
guild = self._get_guild(int(data['guild_id']))
|
guild = self._get_guild(int(data['guild_id']))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
channel = PartialMessageable(state=self, id=channel_id, type=ChannelType.private)
|
channel = DMChannel._from_message(self, channel_id)
|
||||||
guild = None
|
guild = None
|
||||||
else:
|
else:
|
||||||
channel = guild and guild._resolve_channel(channel_id)
|
channel = guild and guild._resolve_channel(channel_id)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user