Browse Source

Implement DAC eligibility and joining through guilds

pull/10109/head
dolfies 2 years ago
parent
commit
887cfcc43f
  1. 45
      discord/guild.py
  2. 6
      discord/http.py
  3. 4
      discord/types/guild.py

45
discord/guild.py

@ -4893,3 +4893,48 @@ class Guild(Hashable):
)
return AutoModRule(data=data, guild=self, state=self._state)
async def admin_community_eligibility(self) -> bool:
"""|coro|
Checks if the user is eligible to join the Discord Admin Community through the guild.
.. versionadded:: 2.1
Raises
-------
Forbidden
You do not have permissions to join through the guild.
HTTPException
Checking eligibility failed.
Returns
--------
:class:`bool`
Whether the user is eligible to join the Discord Admin Community through the guild.
"""
data = await self._state.http.get_admin_server_eligibility(self.id)
return data['eligible_for_admin_server']
async def join_admin_community(self) -> Guild:
"""|coro|
Joins the Discord Admin Community through the guild.
You should check your eligibility with :meth:`admin_community_eligibility` before calling this.
.. versionadded:: 2.1
Raises
-------
Forbidden
You do not have permissions to join through the guild.
HTTPException
Joining failed.
Returns
--------
:class:`Guild`
The Discord Admin Community guild.
"""
data = await self._state.http.join_admin_server(self.id)
return Guild(state=self._state, data=data)

6
discord/http.py

@ -2628,6 +2628,12 @@ class HTTPClient:
reason=reason,
)
def get_admin_server_eligibility(self, guild_id: Snowflake) -> Response[guild.AdminServerEligibility]:
return self.request(Route('GET', '/guilds/{guild_id}/admin-server-eligibility', guild_id=guild_id))
def join_admin_server(self, guild_id: Snowflake) -> Response[guild.Guild]:
return self.request(Route('POST', '/guilds/{guild_id}/join-admin-server', guild_id=guild_id))
# Relationships
def get_relationships(self) -> Response[List[user.Relationship]]:

4
discord/types/guild.py

@ -165,6 +165,10 @@ class RolePositionUpdate(_RolePositionRequired, total=False):
position: Optional[Snowflake]
class AdminServerEligibility(TypedDict):
eligible_for_admin_server: bool
class SupplementalGuild(UnavailableGuild):
embedded_activities: list
voice_states: List[GuildVoiceState]

Loading…
Cancel
Save