aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_core/utils
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_core/utils')
-rw-r--r--pydis_core/utils/checks.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/pydis_core/utils/checks.py b/pydis_core/utils/checks.py
index 3ae92489..5c846198 100644
--- a/pydis_core/utils/checks.py
+++ b/pydis_core/utils/checks.py
@@ -1,5 +1,6 @@
import datetime
from collections.abc import Callable, Container, Iterable
+from typing import TYPE_CHECKING
from discord.ext.commands import (
BucketType,
@@ -14,6 +15,9 @@ from discord.ext.commands import (
from pydis_core.utils.logging import get_logger
+if TYPE_CHECKING:
+ import discord
+
log = get_logger(__name__)
@@ -74,9 +78,14 @@ def in_whitelist_check(
# categories, it's probably not wise to rely on its category in any case.
channels = tuple(channels) + (redirect,)
- if channels and ctx.channel.id in channels:
- log.trace(f"{ctx.author} may use the `{ctx.command.name}` command as they are in a whitelisted channel.")
- return True
+ if channels:
+ # If the channel is a thread/forum post we want to check the parent channel instead.
+ parent: discord.ForumChannel | discord.TextChannel | None = getattr(ctx.channel, "parent", None)
+ channel_id_to_check = parent.id if parent else ctx.channel.id
+
+ if channel_id_to_check in channels:
+ log.trace(f"{ctx.author} may use the `{ctx.command.name}` command as they are in a whitelisted channel.")
+ return True
# Only check the category id if we have a category whitelist and the channel has a `category_id`
if categories and hasattr(ctx.channel, "category_id") and ctx.channel.category_id in categories: