mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Remove deprecated TextChannel.active_threads for Guild version
This also fills in the ThreadMember data from the endpoint
This commit is contained in:
parent
0df3f51a0b
commit
b73f02b9c3
@ -778,29 +778,6 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
|
|||||||
"""
|
"""
|
||||||
return ArchivedThreadIterator(self.id, self.guild, limit=limit, joined=joined, private=private, before=before)
|
return ArchivedThreadIterator(self.id, self.guild, limit=limit, joined=joined, private=private, before=before)
|
||||||
|
|
||||||
async def active_threads(self) -> List[Thread]:
|
|
||||||
"""|coro|
|
|
||||||
|
|
||||||
Returns a list of active :class:`Thread` that the client can access.
|
|
||||||
|
|
||||||
This includes both private and public threads.
|
|
||||||
|
|
||||||
.. versionadded:: 2.0
|
|
||||||
|
|
||||||
Raises
|
|
||||||
------
|
|
||||||
HTTPException
|
|
||||||
The request to get the active threads failed.
|
|
||||||
|
|
||||||
Returns
|
|
||||||
--------
|
|
||||||
List[:class:`Thread`]
|
|
||||||
The archived threads
|
|
||||||
"""
|
|
||||||
data = await self._state.http.get_active_threads(self.id)
|
|
||||||
# TODO: thread members?
|
|
||||||
return [Thread(guild=self.guild, state=self._state, data=d) for d in data.get('threads', [])]
|
|
||||||
|
|
||||||
|
|
||||||
class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable):
|
class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable):
|
||||||
__slots__ = (
|
__slots__ = (
|
||||||
|
@ -73,7 +73,7 @@ from .asset import Asset
|
|||||||
from .flags import SystemChannelFlags
|
from .flags import SystemChannelFlags
|
||||||
from .integrations import Integration, _integration_factory
|
from .integrations import Integration, _integration_factory
|
||||||
from .stage_instance import StageInstance
|
from .stage_instance import StageInstance
|
||||||
from .threads import Thread
|
from .threads import Thread, ThreadMember
|
||||||
from .sticker import GuildSticker
|
from .sticker import GuildSticker
|
||||||
from .file import File
|
from .file import File
|
||||||
|
|
||||||
@ -423,7 +423,9 @@ class Guild(Hashable):
|
|||||||
|
|
||||||
self.mfa_level: MFALevel = guild.get('mfa_level')
|
self.mfa_level: MFALevel = guild.get('mfa_level')
|
||||||
self.emojis: Tuple[Emoji, ...] = tuple(map(lambda d: state.store_emoji(self, d), guild.get('emojis', [])))
|
self.emojis: Tuple[Emoji, ...] = tuple(map(lambda d: state.store_emoji(self, d), guild.get('emojis', [])))
|
||||||
self.stickers: Tuple[GuildSticker, ...] = tuple(map(lambda d: state.store_sticker(self, d), guild.get('stickers', [])))
|
self.stickers: Tuple[GuildSticker, ...] = tuple(
|
||||||
|
map(lambda d: state.store_sticker(self, d), guild.get('stickers', []))
|
||||||
|
)
|
||||||
self.features: List[GuildFeature] = guild.get('features', [])
|
self.features: List[GuildFeature] = guild.get('features', [])
|
||||||
self._splash: Optional[str] = guild.get('splash')
|
self._splash: Optional[str] = guild.get('splash')
|
||||||
self._system_channel_id: Optional[int] = utils._get_as_snowflake(guild, 'system_channel_id')
|
self._system_channel_id: Optional[int] = utils._get_as_snowflake(guild, 'system_channel_id')
|
||||||
@ -628,7 +630,6 @@ class Guild(Hashable):
|
|||||||
"""
|
"""
|
||||||
return self._channels.get(channel_id) or self._threads.get(channel_id)
|
return self._channels.get(channel_id) or self._threads.get(channel_id)
|
||||||
|
|
||||||
|
|
||||||
def get_channel(self, channel_id: int, /) -> Optional[GuildChannel]:
|
def get_channel(self, channel_id: int, /) -> Optional[GuildChannel]:
|
||||||
"""Returns a channel with the given ID.
|
"""Returns a channel with the given ID.
|
||||||
|
|
||||||
@ -1591,6 +1592,35 @@ class Guild(Hashable):
|
|||||||
|
|
||||||
return [convert(d) for d in data]
|
return [convert(d) for d in data]
|
||||||
|
|
||||||
|
async def active_threads(self) -> List[Thread]:
|
||||||
|
"""|coro|
|
||||||
|
|
||||||
|
Returns a list of active :class:`Thread` that the client can access.
|
||||||
|
|
||||||
|
This includes both private and public threads.
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
Raises
|
||||||
|
------
|
||||||
|
HTTPException
|
||||||
|
The request to get the active threads failed.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
--------
|
||||||
|
List[:class:`Thread`]
|
||||||
|
The active threads
|
||||||
|
"""
|
||||||
|
data = await self._state.http.get_active_threads(self.id)
|
||||||
|
threads = [Thread(guild=self, state=self._state, data=d) for d in data.get('threads', [])]
|
||||||
|
thread_lookup: Dict[int, Thread] = {thread.id: thread for thread in threads}
|
||||||
|
for member in data.get('members', []):
|
||||||
|
thread = thread_lookup.get(int(member['id']))
|
||||||
|
if thread is not None:
|
||||||
|
thread._add_member(ThreadMember(parent=thread, data=member))
|
||||||
|
|
||||||
|
return threads
|
||||||
|
|
||||||
# TODO: Remove Optional typing here when async iterators are refactored
|
# TODO: Remove Optional typing here when async iterators are refactored
|
||||||
def fetch_members(self, *, limit: int = 1000, after: Optional[SnowflakeTime] = None) -> MemberIterator:
|
def fetch_members(self, *, limit: int = 1000, after: Optional[SnowflakeTime] = None) -> MemberIterator:
|
||||||
"""Retrieves an :class:`.AsyncIterator` that enables receiving the guild's members. In order to use this,
|
"""Retrieves an :class:`.AsyncIterator` that enables receiving the guild's members. In order to use this,
|
||||||
|
@ -958,8 +958,8 @@ class HTTPClient:
|
|||||||
params['limit'] = limit
|
params['limit'] = limit
|
||||||
return self.request(route, params=params)
|
return self.request(route, params=params)
|
||||||
|
|
||||||
def get_active_threads(self, channel_id: Snowflake) -> Response[threads.ThreadPaginationPayload]:
|
def get_active_threads(self, guild_id: Snowflake) -> Response[threads.ThreadPaginationPayload]:
|
||||||
route = Route('GET', '/channels/{channel_id}/threads/active', channel_id=channel_id)
|
route = Route('GET', '/guilds/{guild_id}/threads/active', guild_id=guild_id)
|
||||||
return self.request(route)
|
return self.request(route)
|
||||||
|
|
||||||
def get_thread_members(self, channel_id: Snowflake) -> Response[List[threads.ThreadMember]]:
|
def get_thread_members(self, channel_id: Snowflake) -> Response[List[threads.ThreadMember]]:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user