Browse Source

Add support Member.fetch_voice

pull/9932/head
Andrin 7 months ago
committed by GitHub
parent
commit
62e52803a7
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 7
      discord/http.py
  2. 34
      discord/member.py

7
discord/http.py

@ -92,6 +92,7 @@ if TYPE_CHECKING:
welcome_screen,
sku,
poll,
voice,
)
from .types.snowflake import Snowflake, SnowflakeList
@ -1147,6 +1148,12 @@ class HTTPClient:
r = Route('PATCH', '/guilds/{guild_id}/members/{user_id}', guild_id=guild_id, user_id=user_id)
return self.request(r, json=fields, reason=reason)
def get_my_voice_state(self, guild_id: Snowflake) -> Response[voice.GuildVoiceState]:
return self.request(Route('GET', '/guilds/{guild_id}/voice-states/@me', guild_id=guild_id))
def get_voice_state(self, guild_id: Snowflake, user_id: Snowflake) -> Response[voice.GuildVoiceState]:
return self.request(Route('GET', '/guilds/{guild_id}/voice-states/{user_id}', guild_id=guild_id, user_id=user_id))
# Channel management
def edit_channel(

34
discord/member.py

@ -1153,6 +1153,40 @@ class Member(discord.abc.Messageable, _UserTag):
for role in roles:
await req(guild_id, user_id, role.id, reason=reason)
async def fetch_voice(self) -> VoiceState:
"""|coro|
Retrieves the current voice state from this member.
.. versionadded:: 2.5
Raises
-------
NotFound
The member is not in a voice channel.
Forbidden
You do not have permissions to get a voice state.
HTTPException
Retrieving the voice state failed.
Returns
-------
:class:`VoiceState`
The current voice state of the member.
"""
guild_id = self.guild.id
if self._state.self_id == self.id:
data = await self._state.http.get_my_voice_state(guild_id)
else:
data = await self._state.http.get_voice_state(guild_id, self.id)
channel_id = data.get('channel_id')
channel: Optional[VocalGuildChannel] = None
if channel_id is not None:
channel = self.guild.get_channel(int(channel_id)) # type: ignore # must be voice channel here
return VoiceState(data=data, channel=channel)
def get_role(self, role_id: int, /) -> Optional[Role]:
"""Returns a role with the given ID from roles which the member has.

Loading…
Cancel
Save