From edbbd76b3c07ac11a1785e32fa4637987ddb6863 Mon Sep 17 00:00:00 2001 From: Predeactor <61093863+Predeactor@users.noreply.github.com> Date: Thu, 21 Jan 2021 11:42:10 +0100 Subject: [PATCH] Document that discord.DMChannel can be used in MessagePredicate (#4718) * Allow "discord.DMChannel" for MessagePredicate This closes #4707. * Optional only takes a single type, use Union Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com> --- redbot/core/utils/predicates.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/redbot/core/utils/predicates.py b/redbot/core/utils/predicates.py index efe316fb2..09f3f4f0c 100644 --- a/redbot/core/utils/predicates.py +++ b/redbot/core/utils/predicates.py @@ -67,7 +67,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def same_context( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the message fits the described context. @@ -104,7 +104,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def cancelled( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the message is ``[p]cancel``. @@ -133,7 +133,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def yes_or_no( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the message is "yes"/"y" or "no"/"n". @@ -176,7 +176,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def valid_int( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is an integer. @@ -216,7 +216,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def valid_float( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is a float. @@ -256,7 +256,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): def positive( cls, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is a positive number. @@ -492,7 +492,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, value: str, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is equal to the specified value. @@ -522,7 +522,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, value: str, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response *as lowercase* is equal to the specified value. @@ -552,7 +552,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, value: Union[int, float], ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is less than the specified value. @@ -583,7 +583,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, value: Union[int, float], ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is greater than the specified value. @@ -614,7 +614,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, length: int, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response's length is less than the specified length. @@ -644,7 +644,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, length: int, ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response's length is greater than the specified length. @@ -674,7 +674,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, collection: Sequence[str], ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response is contained in the specified collection. @@ -718,7 +718,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, collection: Sequence[str], ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Same as :meth:`contained_in`, but the response is set to lowercase before matching. @@ -759,7 +759,7 @@ class MessagePredicate(Callable[[discord.Message], bool]): cls, pattern: Union[Pattern[str], str], ctx: Optional[commands.Context] = None, - channel: Optional[discord.TextChannel] = None, + channel: Optional[Union[discord.TextChannel, discord.DMChannel]] = None, user: Optional[discord.abc.User] = None, ) -> "MessagePredicate": """Match if the response matches the specified regex pattern.