Browse Source

Update Guild.integrations()

pull/10109/head
dolfies 2 years ago
parent
commit
dc3f552a5a
  1. 12
      discord/guild.py
  2. 14
      discord/http.py
  3. 3
      discord/types/integration.py

12
discord/guild.py

@ -3058,7 +3058,7 @@ class Guild(Hashable):
""" """
await self._state.http.create_integration(self.id, type, id, reason=reason) await self._state.http.create_integration(self.id, type, id, reason=reason)
async def integrations(self, *, with_applications=True) -> List[Integration]: async def integrations(self, *, has_commands: bool = False) -> List[Integration]:
"""|coro| """|coro|
Returns a list of all integrations attached to the guild. Returns a list of all integrations attached to the guild.
@ -3069,8 +3069,10 @@ class Guild(Hashable):
Parameters Parameters
----------- -----------
with_applications: :class:`bool` has_commands: :class:`bool`
Whether to include applications. Whether to only return integrations that have commands registered.
.. versionadded:: 2.1
Raises Raises
------- -------
@ -3084,12 +3086,10 @@ class Guild(Hashable):
List[:class:`Integration`] List[:class:`Integration`]
The list of integrations that are attached to the guild. The list of integrations that are attached to the guild.
""" """
data = await self._state.http.get_all_integrations(self.id, with_applications) data = await self._state.http.get_all_integrations(self.id, has_commands=has_commands)
def convert(d): def convert(d):
factory, _ = _integration_factory(d['type']) factory, _ = _integration_factory(d['type'])
if factory is None:
raise InvalidData('Unknown integration type {type!r} for integration ID {id}'.format_map(d))
return factory(guild=self, data=d) return factory(guild=self, data=d)
return [convert(d) for d in data] return [convert(d) for d in data]

14
discord/http.py

@ -2144,14 +2144,22 @@ class HTTPClient:
return self.request(Route('PUT', '/guilds/{guild_id}/requests/@me', guild_id=guild_id), json=payload) return self.request(Route('PUT', '/guilds/{guild_id}/requests/@me', guild_id=guild_id), json=payload)
def get_all_integrations( def get_all_integrations(
self, guild_id: Snowflake, include_applications: bool = True self,
guild_id: Snowflake,
*,
include_applications: bool = True,
include_role_connections_metadata: bool = False,
has_commands: bool = False,
) -> Response[List[integration.Integration]]: ) -> Response[List[integration.Integration]]:
r = Route('GET', '/guilds/{guild_id}/integrations', guild_id=guild_id)
params = { params = {
'include_applications': str(include_applications).lower(), 'include_applications': str(include_applications).lower(),
} }
if include_role_connections_metadata:
params['include_role_connections_metadata'] = 'true'
if has_commands:
params['has_commands'] = 'true'
return self.request(r, params=params) return self.request(Route('GET', '/guilds/{guild_id}/integrations', guild_id=guild_id), params=params)
def create_integration( def create_integration(
self, guild_id: Snowflake, type: integration.IntegrationType, id: int, *, reason: Optional[str] = None self, guild_id: Snowflake, type: integration.IntegrationType, id: int, *, reason: Optional[str] = None

3
discord/types/integration.py

@ -27,7 +27,7 @@ from __future__ import annotations
from typing import List, Literal, Optional, TypedDict, Union from typing import List, Literal, Optional, TypedDict, Union
from typing_extensions import NotRequired from typing_extensions import NotRequired
from .application import IntegrationApplication from .application import IntegrationApplication, RoleConnectionMetadata
from .guild import Guild from .guild import Guild
from .snowflake import Snowflake from .snowflake import Snowflake
from .user import User from .user import User
@ -71,6 +71,7 @@ class StreamIntegration(BaseIntegration):
class BotIntegration(BaseIntegration): class BotIntegration(BaseIntegration):
application: IntegrationApplication application: IntegrationApplication
scopes: List[str] scopes: List[str]
role_connections_metadata: NotRequired[List[RoleConnectionMetadata]]
class ConnectionIntegration(BaseIntegration): class ConnectionIntegration(BaseIntegration):

Loading…
Cancel
Save