From 4c5e710b9a1d7a49aab6272b19b5669c5eeff036 Mon Sep 17 00:00:00 2001 From: Revnoplex <62947003+Revnoplex@users.noreply.github.com> Date: Mon, 23 Mar 2026 08:45:56 +1100 Subject: [PATCH 1/8] fix: remove internal use of deprecated role type methods --- discord/guild.py | 4 +++- discord/role.py | 10 +++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/discord/guild.py b/discord/guild.py index 63ba4aee5a..935e5b38a1 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -68,6 +68,7 @@ VideoQualityMode, VoiceRegion, try_enum, + RoleType ) from .errors import ClientException, HTTPException, InvalidArgument, InvalidData from .file import File @@ -129,6 +130,7 @@ from .voice import VoiceClient from .webhook import Webhook + VocalGuildChannel = Union[VoiceChannel, StageChannel] GuildChannel = Union[ VoiceChannel, StageChannel, TextChannel, ForumChannel, CategoryChannel @@ -1250,7 +1252,7 @@ def premium_subscriber_role(self) -> Role | None: .. versionadded:: 1.6 """ for role in self._roles.values(): - if role.is_premium_subscriber(): + if role.type == RoleType.BOOSTER: return role return None diff --git a/discord/role.py b/discord/role.py index cc739f548b..6cc5092a3d 100644 --- a/discord/role.py +++ b/discord/role.py @@ -563,7 +563,7 @@ def is_bot_managed(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.is_bot_managed() + return self.tags is not None and self.tags.type == RoleType.APPLICATION @deprecated( "Role.is_premium_subscriber is deprecated since version 2.8, consider using Role.type instead." @@ -576,7 +576,7 @@ def is_premium_subscriber(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.is_premium_subscriber() + return self.tags is not None and self.tags.type == RoleType.BOOSTER @deprecated( "Role.is_integration is deprecated since version 2.8, consider using Role.type instead." @@ -590,7 +590,7 @@ def is_integration(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.is_integration() + return self.tags is not None and self.tags.type == RoleType.INTEGRATION def is_assignable(self) -> bool: """Whether the role is able to be assigned or removed by the bot. This checks whether all of the following conditions are true: @@ -630,7 +630,7 @@ def is_available_for_purchase(self) -> bool: .. versionadded:: 2.7 """ - return self.tags is not None and self.tags.is_available_for_purchase() + return self.tags is not None and self.tags.type == RoleType.PREMIUM_SUBSCRIPTION_TIER @deprecated( "Role.is_guild_connections_role is deprecated since version 2.8, consider using Role.type instead." @@ -643,7 +643,7 @@ def is_guild_connections_role(self) -> bool: .. versionadded:: 2.7 """ - return self.tags is not None and self.tags.is_guild_connections_role() + return self.tags is not None and self.tags.type == RoleType.CONNECTION @property def permissions(self) -> Permissions: From a581d91a4ed69e7637bb53363dbc0e04f19f6010 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:58:52 +0000 Subject: [PATCH 2/8] style(pre-commit): auto fixes from pre-commit.com hooks --- discord/guild.py | 3 +-- discord/role.py | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/discord/guild.py b/discord/guild.py index 935e5b38a1..6bf42951c5 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -61,6 +61,7 @@ NotificationLevel, NSFWLevel, OnboardingMode, + RoleType, ScheduledEventLocationType, ScheduledEventPrivacyLevel, SortOrder, @@ -68,7 +69,6 @@ VideoQualityMode, VoiceRegion, try_enum, - RoleType ) from .errors import ClientException, HTTPException, InvalidArgument, InvalidData from .file import File @@ -130,7 +130,6 @@ from .voice import VoiceClient from .webhook import Webhook - VocalGuildChannel = Union[VoiceChannel, StageChannel] GuildChannel = Union[ VoiceChannel, StageChannel, TextChannel, ForumChannel, CategoryChannel diff --git a/discord/role.py b/discord/role.py index 6cc5092a3d..79e12ac7cf 100644 --- a/discord/role.py +++ b/discord/role.py @@ -630,7 +630,10 @@ def is_available_for_purchase(self) -> bool: .. versionadded:: 2.7 """ - return self.tags is not None and self.tags.type == RoleType.PREMIUM_SUBSCRIPTION_TIER + return ( + self.tags is not None + and self.tags.type == RoleType.PREMIUM_SUBSCRIPTION_TIER + ) @deprecated( "Role.is_guild_connections_role is deprecated since version 2.8, consider using Role.type instead." From 0ef83201b275be48e2e14d12ea4630cccdc1edb7 Mon Sep 17 00:00:00 2001 From: Revnoplex <62947003+Revnoplex@users.noreply.github.com> Date: Mon, 23 Mar 2026 08:58:57 +1100 Subject: [PATCH 3/8] Changelog entry for #3167 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70d7eff6a2..94873a40c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ These changes are available on the `master` branch, but have not yet been releas ### Changed ### Fixed - +- Fixed internal use of deprecated role type methods. + ([#3167](https://github.com/Pycord-Development/pycord/pull/3167)) ### Deprecated ### Removed From dad0c92f8bd5009e6d8f76c81fbe9fbebe50a336 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:59:49 +0000 Subject: [PATCH 4/8] style(pre-commit): auto fixes from pre-commit.com hooks --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94873a40c3..632784ecc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,8 +15,10 @@ These changes are available on the `master` branch, but have not yet been releas ### Changed ### Fixed + - Fixed internal use of deprecated role type methods. ([#3167](https://github.com/Pycord-Development/pycord/pull/3167)) + ### Deprecated ### Removed From f79382a6a2995bf0230aa965281cf1ca3b5ff6ef Mon Sep 17 00:00:00 2001 From: Revnoplex <62947003+Revnoplex@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:46:41 +1100 Subject: [PATCH 5/8] simplify checks --- discord/guild.py | 2 +- discord/role.py | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/discord/guild.py b/discord/guild.py index 6bf42951c5..4ecbfe57bd 100644 --- a/discord/guild.py +++ b/discord/guild.py @@ -1251,7 +1251,7 @@ def premium_subscriber_role(self) -> Role | None: .. versionadded:: 1.6 """ for role in self._roles.values(): - if role.type == RoleType.BOOSTER: + if role.type is RoleType.BOOSTER: return role return None diff --git a/discord/role.py b/discord/role.py index 79e12ac7cf..333a6ea2b2 100644 --- a/discord/role.py +++ b/discord/role.py @@ -563,7 +563,7 @@ def is_bot_managed(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.type == RoleType.APPLICATION + return self.type is RoleType.APPLICATION @deprecated( "Role.is_premium_subscriber is deprecated since version 2.8, consider using Role.type instead." @@ -576,7 +576,7 @@ def is_premium_subscriber(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.type == RoleType.BOOSTER + return self.type is RoleType.BOOSTER @deprecated( "Role.is_integration is deprecated since version 2.8, consider using Role.type instead." @@ -590,7 +590,7 @@ def is_integration(self) -> bool: .. versionadded:: 1.6 """ - return self.tags is not None and self.tags.type == RoleType.INTEGRATION + return self.type is RoleType.INTEGRATION def is_assignable(self) -> bool: """Whether the role is able to be assigned or removed by the bot. This checks whether all of the following conditions are true: @@ -631,8 +631,7 @@ def is_available_for_purchase(self) -> bool: .. versionadded:: 2.7 """ return ( - self.tags is not None - and self.tags.type == RoleType.PREMIUM_SUBSCRIPTION_TIER + self.type is RoleType.PREMIUM_SUBSCRIPTION_TIER ) @deprecated( @@ -646,7 +645,7 @@ def is_guild_connections_role(self) -> bool: .. versionadded:: 2.7 """ - return self.tags is not None and self.tags.type == RoleType.CONNECTION + return self.type is RoleType.CONNECTION @property def permissions(self) -> Permissions: From b605fa35458edc6295e0ef935d8ed3dbaa34e417 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:51:25 +0000 Subject: [PATCH 6/8] style(pre-commit): auto fixes from pre-commit.com hooks --- discord/role.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/discord/role.py b/discord/role.py index 457d3aa018..ad7a417262 100644 --- a/discord/role.py +++ b/discord/role.py @@ -639,9 +639,7 @@ def is_available_for_purchase(self) -> bool: .. versionadded:: 2.7 """ - return ( - self.type is RoleType.PREMIUM_SUBSCRIPTION_TIER - ) + return self.type is RoleType.PREMIUM_SUBSCRIPTION_TIER @deprecated( "Role.is_guild_connections_role is deprecated since version 2.8, consider using Role.type instead." From 6fe7dd1fa0bd659e03225652647b1aa93f97756d Mon Sep 17 00:00:00 2001 From: Revnoplex <62947003+Revnoplex@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:54:35 +1100 Subject: [PATCH 7/8] Update discord/role.py Co-authored-by: Paillat Signed-off-by: Revnoplex <62947003+Revnoplex@users.noreply.github.com> --- discord/role.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/discord/role.py b/discord/role.py index ad7a417262..64c6f6e057 100644 --- a/discord/role.py +++ b/discord/role.py @@ -599,7 +599,11 @@ def is_integration(self) -> bool: .. versionadded:: 1.6 """ - return self.type is RoleType.INTEGRATION + return self.type in ( + RoleType.INTEGRATION, + RoleType.PREMIUM_SUBSCRIPTION_TIER, + RoleType.DRAFT_PREMIUM_SUBSCRIPTION_TIER + ) def is_assignable(self) -> bool: """Whether the role is able to be assigned or removed by the bot. This checks whether all of the following conditions are true: From 4e3d6208b84dbaadb72161c94a63f34830a68fee Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 22:55:03 +0000 Subject: [PATCH 8/8] style(pre-commit): auto fixes from pre-commit.com hooks --- discord/role.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/discord/role.py b/discord/role.py index 64c6f6e057..0508a87671 100644 --- a/discord/role.py +++ b/discord/role.py @@ -600,10 +600,10 @@ def is_integration(self) -> bool: .. versionadded:: 1.6 """ return self.type in ( - RoleType.INTEGRATION, - RoleType.PREMIUM_SUBSCRIPTION_TIER, - RoleType.DRAFT_PREMIUM_SUBSCRIPTION_TIER - ) + RoleType.INTEGRATION, + RoleType.PREMIUM_SUBSCRIPTION_TIER, + RoleType.DRAFT_PREMIUM_SUBSCRIPTION_TIER, + ) def is_assignable(self) -> bool: """Whether the role is able to be assigned or removed by the bot. This checks whether all of the following conditions are true: