diff --git a/discord/utils.py b/discord/utils.py index 7cb58ea1e..ccecfeed8 100644 --- a/discord/utils.py +++ b/discord/utils.py @@ -251,18 +251,20 @@ def deprecated(instead: Optional[str] = None) -> Callable[[Callable[..., T]], Ca def oauth_url( - client_id: str, - permissions: Optional[Permissions] = None, - guild: Optional[Snowflake] = None, - redirect_uri: Optional[str] = None, - scopes: Optional[Iterable[str]] = None, + client_id: Union[int, str], + *, + permissions: Permissions = MISSING, + guild: Snowflake = MISSING, + redirect_uri: str = MISSING, + scopes: Iterable[str] = MISSING, + disable_guild_select: bool = False, ): """A helper function that returns the OAuth2 URL for inviting the bot into guilds. Parameters ----------- - client_id: :class:`str` + client_id: Union[:class:`int`, :class:`str`] The client ID for your bot. permissions: :class:`~discord.Permissions` The permissions you're requesting. If not given then you won't be requesting any @@ -275,6 +277,10 @@ def oauth_url( An optional valid list of scopes. Defaults to ``('bot',)``. .. versionadded:: 1.7 + disable_guild_select: :class:`bool` + Whether to disallow the user from changing the guild dropdown. + + .. versionadded:: 2.0 Returns -------- @@ -282,15 +288,17 @@ def oauth_url( The OAuth2 URL for inviting the bot into guilds. """ url = f'https://discord.com/oauth2/authorize?client_id={client_id}' - url = url + '&scope=' + '+'.join(scopes or ('bot',)) - if permissions is not None: - url = url + '&permissions=' + str(permissions.value) - if guild is not None: - url = url + "&guild_id=" + str(guild.id) - if redirect_uri is not None: + url += '&scope=' + '+'.join(scopes or ('bot',)) + if permissions is not MISSING: + url += f'&permissions={permissions.value}' + if guild is not MISSING: + url += f'&guild_id={guild.id}' + if redirect_uri is not MISSING: from urllib.parse import urlencode - url = url + "&response_type=code&" + urlencode({'redirect_uri': redirect_uri}) + url += '&response_type=code&' + urlencode({'redirect_uri': redirect_uri}) + if disable_guild_select: + url += '&disable_guild_select=true' return url