diff --git a/discord/guild.py b/discord/guild.py index d23326242..69da799de 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -4961,3 +4961,25 @@ class Guild(Hashable): """ data = await self._state.http.join_admin_server(self.id) return Guild(state=self._state, data=data) + + async def migrate_command_scope(self) -> List[int]: + """|coro| + + Migrates the guild's bot integrations to the applications.commands scope. + + .. versionadded:: 2.1 + + Raises + ------- + Forbidden + You do not have permissions to migrate the guild's bots. + HTTPException + Migrating failed. + + Returns + -------- + List[:class:`int`] + The integration IDs that have newly-added application commands. + """ + data = await self._state.http.migrate_command_scope(self.id) + return list(map(int, data['integration_ids_with_app_commands'])) diff --git a/discord/http.py b/discord/http.py index 5d3cd7610..d79794876 100644 --- a/discord/http.py +++ b/discord/http.py @@ -2663,12 +2663,17 @@ class HTTPClient: reason=reason, ) + # Misc. guild management + 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)) + def migrate_command_scope(self, guild_id: Snowflake) -> Response[guild.CommandScopeMigration]: + return self.request(Route('POST', '/guilds/{guild_id}/migrate-command-scope', guild_id=guild_id)) + # Relationships def get_relationships(self) -> Response[List[user.Relationship]]: diff --git a/discord/types/guild.py b/discord/types/guild.py index c1a27ddb1..287b92e1a 100644 --- a/discord/types/guild.py +++ b/discord/types/guild.py @@ -169,6 +169,10 @@ class AdminServerEligibility(TypedDict): eligible_for_admin_server: bool +class CommandScopeMigration(TypedDict): + integration_ids_with_app_commands: List[Snowflake] + + class SupplementalGuild(UnavailableGuild): embedded_activities: list voice_states: List[GuildVoiceState]