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)
async def integrations(self, *, with_applications=True) -> List[Integration]:
async def integrations(self, *, has_commands: bool = False) -> List[Integration]:
"""|coro|
Returns a list of all integrations attached to the guild.
@ -3069,8 +3069,10 @@ class Guild(Hashable):
Parameters
-----------
with_applications: :class:`bool`
Whether to include applications.
has_commands: :class:`bool`
Whether to only return integrations that have commands registered.
.. versionadded:: 2.1
Raises
-------
@ -3084,12 +3086,10 @@ class Guild(Hashable):
List[:class:`Integration`]
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):
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 [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)
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]]:
r = Route('GET', '/guilds/{guild_id}/integrations', guild_id=guild_id)
params = {
'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(
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_extensions import NotRequired
from .application import IntegrationApplication
from .application import IntegrationApplication, RoleConnectionMetadata
from .guild import Guild
from .snowflake import Snowflake
from .user import User
@ -71,6 +71,7 @@ class StreamIntegration(BaseIntegration):
class BotIntegration(BaseIntegration):
application: IntegrationApplication
scopes: List[str]
role_connections_metadata: NotRequired[List[RoleConnectionMetadata]]
class ConnectionIntegration(BaseIntegration):

Loading…
Cancel
Save