mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-14 01:40:02 +00:00
[commands] Added dm_only check
Raises PrivateMessageOnly on failure.
This commit is contained in:
parent
50dcdac5ca
commit
aabbd5a446
@ -40,7 +40,7 @@ from .cog import Cog
|
||||
__all__ = ['Command', 'Group', 'GroupMixin', 'command', 'group',
|
||||
'has_role', 'has_permissions', 'has_any_role', 'check',
|
||||
'bot_has_role', 'bot_has_permissions', 'bot_has_any_role',
|
||||
'cooldown', 'guild_only', 'is_owner', 'is_nsfw']
|
||||
'cooldown', 'dm_only', 'guild_only', 'is_owner', 'is_nsfw']
|
||||
|
||||
def wrap_callback(coro):
|
||||
@functools.wraps(coro)
|
||||
@ -1433,6 +1433,22 @@ def bot_has_permissions(**perms):
|
||||
|
||||
return check(predicate)
|
||||
|
||||
def dm_only():
|
||||
"""A :func:`.check` that indicates this command must only be used in a
|
||||
DM context only. Only private messages are allowed when
|
||||
using the command.
|
||||
|
||||
This check raises a special exception, :exc:`.PrivateMessageOnly`
|
||||
that is inherited from :exc:`.CheckFailure`.
|
||||
"""
|
||||
|
||||
def predicate(ctx):
|
||||
if ctx.guild is not None:
|
||||
raise PrivateMessageOnly('This command cannot be used in private messages.')
|
||||
return True
|
||||
|
||||
return check(predicate)
|
||||
|
||||
def guild_only():
|
||||
"""A :func:`.check` that indicates this command must only be used in a
|
||||
guild context only. Basically, no private messages are allowed when
|
||||
|
@ -28,15 +28,15 @@ from discord.errors import DiscordException
|
||||
|
||||
|
||||
__all__ = ['CommandError', 'MissingRequiredArgument', 'BadArgument',
|
||||
'NoPrivateMessage', 'CheckFailure', 'CommandNotFound',
|
||||
'DisabledCommand', 'CommandInvokeError', 'TooManyArguments',
|
||||
'UserInputError', 'CommandOnCooldown', 'NotOwner',
|
||||
'MissingPermissions', 'BotMissingPermissions', 'ConversionError',
|
||||
'BadUnionArgument', 'ArgumentParsingError',
|
||||
'PrivateMessageOnly', 'NoPrivateMessage', 'CheckFailure',
|
||||
'CommandNotFound' ,'DisabledCommand', 'CommandInvokeError',
|
||||
'TooManyArguments', 'UserInputError', 'CommandOnCooldown',
|
||||
'NotOwner', 'MissingPermissions', 'BotMissingPermissions',
|
||||
'ConversionError', 'BadUnionArgument', 'ArgumentParsingError',
|
||||
'UnexpectedQuoteError', 'InvalidEndOfQuotedStringError',
|
||||
'ExpectedClosingQuoteError', 'ExtensionError', 'ExtensionAlreadyLoaded',
|
||||
'ExtensionNotLoaded', 'NoEntryPointError', 'ExtensionFailed',
|
||||
'ExtensionNotFound' ]
|
||||
'ExtensionNotFound']
|
||||
|
||||
class CommandError(DiscordException):
|
||||
r"""The base exception type for all command related errors.
|
||||
@ -118,6 +118,12 @@ class CheckFailure(CommandError):
|
||||
"""Exception raised when the predicates in :attr:`.Command.checks` have failed."""
|
||||
pass
|
||||
|
||||
class PrivateMessageOnly(CheckFailure):
|
||||
"""Exception raised when an operation does not work outside of private
|
||||
message contexts.
|
||||
"""
|
||||
pass
|
||||
|
||||
class NoPrivateMessage(CheckFailure):
|
||||
"""Exception raised when an operation does not work in private message
|
||||
contexts.
|
||||
|
Loading…
x
Reference in New Issue
Block a user