aboutsummaryrefslogtreecommitdiff
path: root/discord/ext/commands
diff options
context:
space:
mode:
Diffstat (limited to 'discord/ext/commands')
-rw-r--r--discord/ext/commands/bot.py6
-rw-r--r--discord/ext/commands/cooldowns.py6
-rw-r--r--discord/ext/commands/core.py8
-rw-r--r--discord/ext/commands/errors.py10
-rw-r--r--discord/ext/commands/help.py42
-rw-r--r--discord/ext/commands/view.py2
6 files changed, 38 insertions, 36 deletions
diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py
index 59f11c74..dabe1439 100644
--- a/discord/ext/commands/bot.py
+++ b/discord/ext/commands/bot.py
@@ -846,7 +846,7 @@ class BotBase(GroupMixin):
raise
raise TypeError("command_prefix must be plain string, iterable of strings, or callable "
- "returning either of these, not {}".format(ret.__class__.__name__))
+ f"returning either of these, not {ret.__class__.__name__}")
if not ret:
raise ValueError("Iterable command_prefix must contain at least one prefix")
@@ -907,13 +907,13 @@ class BotBase(GroupMixin):
except TypeError:
if not isinstance(prefix, list):
raise TypeError("get_prefix must return either a string or a list of string, "
- "not {}".format(prefix.__class__.__name__))
+ f"not {prefix.__class__.__name__}")
# It's possible a bad command_prefix got us here.
for value in prefix:
if not isinstance(value, str):
raise TypeError("Iterable command_prefix or list returned from get_prefix must "
- "contain only strings, not {}".format(value.__class__.__name__))
+ f"contain only strings, not {value.__class__.__name__}")
# Getting here shouldn't happen
raise
diff --git a/discord/ext/commands/cooldowns.py b/discord/ext/commands/cooldowns.py
index 7cfc9fd7..fc438c9f 100644
--- a/discord/ext/commands/cooldowns.py
+++ b/discord/ext/commands/cooldowns.py
@@ -131,7 +131,7 @@ class Cooldown:
return Cooldown(self.rate, self.per, self.type)
def __repr__(self):
- return '<Cooldown rate: {0.rate} per: {0.per} window: {0._window} tokens: {0._tokens}>'.format(self)
+ return f'<Cooldown rate: {self.rate} per: {self.per} window: {self._window} tokens: {self._tokens}>'
class CooldownMapping:
def __init__(self, original):
@@ -202,7 +202,7 @@ class _Semaphore:
self._waiters = deque()
def __repr__(self):
- return '<_Semaphore value={0.value} waiters={1}>'.format(self, len(self._waiters))
+ return f'<_Semaphore value={self.value} waiters={len(self._waiters)}>'
def locked(self):
return self.value == 0
@@ -259,7 +259,7 @@ class MaxConcurrency:
return self.__class__(self.number, per=self.per, wait=self.wait)
def __repr__(self):
- return '<MaxConcurrency per={0.per!r} number={0.number} wait={0.wait}>'.format(self)
+ return f'<MaxConcurrency per={self.per!r} number={self.number} wait={self.wait}>'
def get_key(self, message):
return self.per.get_key(message)
diff --git a/discord/ext/commands/core.py b/discord/ext/commands/core.py
index 0de14b45..a570ee48 100644
--- a/discord/ext/commands/core.py
+++ b/discord/ext/commands/core.py
@@ -695,15 +695,13 @@ class Command(_BaseCommand):
try:
next(iterator)
except StopIteration:
- fmt = 'Callback for {0.name} command is missing "self" parameter.'
- raise discord.ClientException(fmt.format(self))
+ raise discord.ClientException(f'Callback for {self.name} command is missing "self" parameter.')
# next we have the 'ctx' as the next parameter
try:
next(iterator)
except StopIteration:
- fmt = 'Callback for {0.name} command is missing "ctx" parameter.'
- raise discord.ClientException(fmt.format(self))
+ raise discord.ClientException(f'Callback for {self.name} command is missing "ctx" parameter.')
for name, param in iterator:
if param.kind == param.POSITIONAL_OR_KEYWORD or param.kind == param.POSITIONAL_ONLY:
@@ -2046,7 +2044,7 @@ def before_invoke(coro):
@commands.before_invoke(record_usage)
@commands.command()
async def when(self, ctx): # Output: <User> used when at <Time>
- await ctx.send('and i have existed since {}'.format(ctx.bot.user.created_at))
+ await ctx.send(f'and i have existed since {ctx.bot.user.created_at}')
@commands.command()
async def where(self, ctx): # Output: <Nothing>
diff --git a/discord/ext/commands/errors.py b/discord/ext/commands/errors.py
index f9fbba0f..f8a2724d 100644
--- a/discord/ext/commands/errors.py
+++ b/discord/ext/commands/errors.py
@@ -424,7 +424,7 @@ class CommandInvokeError(CommandError):
"""
def __init__(self, e):
self.original = e
- super().__init__('Command raised an exception: {0.__class__.__name__}: {0}'.format(e))
+ super().__init__(f'Command raised an exception: {e.__class__.__name__}: {e}')
class CommandOnCooldown(CommandError):
"""Exception raised when the command being invoked is on cooldown.
@@ -764,8 +764,8 @@ class ExtensionFailed(ExtensionError):
"""
def __init__(self, name, original):
self.original = original
- fmt = 'Extension {0!r} raised an error: {1.__class__.__name__}: {1}'
- super().__init__(fmt.format(name, original), name=name)
+ msg = f'Extension {name!r} raised an error: {original.__class__.__name__}: {original}'
+ super().__init__(msg, name=name)
class ExtensionNotFound(ExtensionError):
"""An exception raised when an extension is not found.
@@ -784,8 +784,8 @@ class ExtensionNotFound(ExtensionError):
"""
def __init__(self, name, original=None):
self.original = None
- fmt = 'Extension {0!r} could not be loaded.'
- super().__init__(fmt.format(name), name=name)
+ msg = f'Extension {name!r} could not be loaded.'
+ super().__init__(msg, name=name)
class CommandRegistrationError(ClientException):
"""An exception raised when the command can't be added
diff --git a/discord/ext/commands/help.py b/discord/ext/commands/help.py
index 117da590..177d3b9b 100644
--- a/discord/ext/commands/help.py
+++ b/discord/ext/commands/help.py
@@ -60,6 +60,7 @@ __all__ = (
# Type <prefix>help command for more info on a command.
# You can also type <prefix>help category for more info on a category.
+
class Paginator:
"""A class that aids in paginating code blocks for Discord messages.
@@ -81,6 +82,7 @@ class Paginator:
The character string inserted between lines. e.g. a newline character.
.. versionadded:: 1.7
"""
+
def __init__(self, prefix='```', suffix='```', max_size=2000, linesep='\n'):
self.prefix = prefix
self.suffix = suffix
@@ -92,7 +94,7 @@ class Paginator:
"""Clears the paginator to have no pages."""
if self.prefix is not None:
self._current_page = [self.prefix]
- self._count = len(self.prefix) + self._linesep_len # prefix + newline
+ self._count = len(self.prefix) + self._linesep_len # prefix + newline
else:
self._current_page = []
self._count = 0
@@ -150,7 +152,7 @@ class Paginator:
if self.prefix is not None:
self._current_page = [self.prefix]
- self._count = len(self.prefix) + self._linesep_len # prefix + linesep
+ self._count = len(self.prefix) + self._linesep_len # prefix + linesep
else:
self._current_page = []
self._count = 0
@@ -171,10 +173,12 @@ class Paginator:
fmt = '<Paginator prefix: {0.prefix!r} suffix: {0.suffix!r} linesep: {0.linesep!r} max_size: {0.max_size} count: {0._count}>'
return fmt.format(self)
+
def _not_overriden(f):
f.__help_command_not_overriden__ = True
return f
+
class _HelpCommandImpl(Command):
def __init__(self, inject, *args, **kwargs):
super().__init__(inject.command_callback, *args, **kwargs)
@@ -250,6 +254,7 @@ class _HelpCommandImpl(Command):
cog.walk_commands = cog.walk_commands.__wrapped__
self.cog = None
+
class HelpCommand:
r"""The base implementation for help command formatting.
@@ -288,7 +293,7 @@ class HelpCommand:
'@everyone': '@\u200beveryone',
'@here': '@\u200bhere',
r'<@!?[0-9]{17,22}>': '@deleted-user',
- r'<@&[0-9]{17,22}>': '@deleted-role'
+ r'<@&[0-9]{17,22}>': '@deleted-role',
}
MENTION_PATTERN = re.compile('|'.join(MENTION_TRANSFORMS.keys()))
@@ -305,10 +310,7 @@ class HelpCommand:
# The keys can be safely copied as-is since they're 99.99% certain of being
# string keys
deepcopy = copy.deepcopy
- self.__original_kwargs__ = {
- k: deepcopy(v)
- for k, v in kwargs.items()
- }
+ self.__original_kwargs__ = {k: deepcopy(v) for k, v in kwargs.items()}
self.__original_args__ = deepcopy(args)
return self
@@ -369,10 +371,7 @@ class HelpCommand:
def get_bot_mapping(self):
"""Retrieves the bot mapping passed to :meth:`send_bot_help`."""
bot = self.context.bot
- mapping = {
- cog: cog.get_commands()
- for cog in bot.cogs.values()
- }
+ mapping = {cog: cog.get_commands() for cog in bot.cogs.values()}
mapping[None] = [c for c in bot.commands if c.cog is None]
return mapping
@@ -607,10 +606,7 @@ class HelpCommand:
The maximum width of the commands.
"""
- as_lengths = (
- discord.utils._string_width(c.name)
- for c in commands
- )
+ as_lengths = (discord.utils._string_width(c.name) for c in commands)
return max(as_lengths, default=0)
def get_destination(self):
@@ -880,6 +876,7 @@ class HelpCommand:
else:
return await self.send_command_help(cmd)
+
class DefaultHelpCommand(HelpCommand):
"""The implementation of the default help command.
@@ -940,8 +937,10 @@ class DefaultHelpCommand(HelpCommand):
def get_ending_note(self):
""":class:`str`: Returns help command's ending note. This is mainly useful to override for i18n purposes."""
command_name = self.invoked_with
- return f"Type {self.clean_prefix}{command_name} command for more info on a command.\n" \
- f"You can also type {self.clean_prefix}{command_name} category for more info on a category."
+ return (
+ f"Type {self.clean_prefix}{command_name} command for more info on a command.\n"
+ f"You can also type {self.clean_prefix}{command_name} category for more info on a category."
+ )
def add_indented_commands(self, commands, *, heading, max_size=None):
"""Indents a list of commands after the specified heading.
@@ -1030,6 +1029,7 @@ class DefaultHelpCommand(HelpCommand):
self.paginator.add_line(bot.description, empty=True)
no_category = f'\u200b{self.no_category}:'
+
def get_category(command, *, no_category=no_category):
cog = command.cog
return cog.qualified_name + ':' if cog is not None else no_category
@@ -1083,6 +1083,7 @@ class DefaultHelpCommand(HelpCommand):
await self.send_pages()
+
class MinimalHelpCommand(HelpCommand):
"""An implementation of a help command with minimal output.
@@ -1149,8 +1150,10 @@ class MinimalHelpCommand(HelpCommand):
The help command opening note.
"""
command_name = self.invoked_with
- return "Use `{0}{1} [command]` for more info on a command.\n" \
- "You can also use `{0}{1} [category]` for more info on a category.".format(self.clean_prefix, command_name)
+ return (
+ f"Use `{self.clean_prefix}{command_name} [command]` for more info on a command.\n"
+ f"You can also use `{self.clean_prefix}{command_name} [category]` for more info on a category."
+ )
def get_command_signature(self, command):
return f'{self.clean_prefix}{command.qualified_name} {command.signature}'
@@ -1273,6 +1276,7 @@ class MinimalHelpCommand(HelpCommand):
self.paginator.add_line(note, empty=True)
no_category = f'\u200b{self.no_category}'
+
def get_category(command, *, no_category=no_category):
cog = command.cog
return cog.qualified_name if cog is not None else no_category
diff --git a/discord/ext/commands/view.py b/discord/ext/commands/view.py
index 763cf73e..a7dc7236 100644
--- a/discord/ext/commands/view.py
+++ b/discord/ext/commands/view.py
@@ -189,4 +189,4 @@ class StringView:
def __repr__(self):
- return '<StringView pos: {0.index} prev: {0.previous} end: {0.end} eof: {0.eof}>'.format(self)
+ return f'<StringView pos: {self.index} prev: {self.previous} end: {self.end} eof: {self.eof}>'