aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2017-01-08 04:50:59 -0500
committerRapptz <[email protected]>2017-01-08 04:50:59 -0500
commitd22d8cc430c9e4fc5a10a4a1407c71530a8c045b (patch)
tree8f1883a74ad3be8e3d554b394e87b14bb2dbac5a
parentVoiceChannel.voice_members is now computed when needed. (diff)
downloaddiscord.py-d22d8cc430c9e4fc5a10a4a1407c71530a8c045b.tar.xz
discord.py-d22d8cc430c9e4fc5a10a4a1407c71530a8c045b.zip
[commands] Add AutoShardedBot counterpart to AutoShardedClient.
-rw-r--r--discord/ext/commands/__init__.py2
-rw-r--r--discord/ext/commands/bot.py130
2 files changed, 70 insertions, 62 deletions
diff --git a/discord/ext/commands/__init__.py b/discord/ext/commands/__init__.py
index d3b64a29..084d0487 100644
--- a/discord/ext/commands/__init__.py
+++ b/discord/ext/commands/__init__.py
@@ -10,7 +10,7 @@ An extension module to facilitate creation of bot commands.
:license: MIT, see LICENSE for more details.
"""
-from .bot import Bot, when_mentioned, when_mentioned_or
+from .bot import Bot, AutoShardedBot, when_mentioned, when_mentioned_or
from .context import Context
from .core import *
from .errors import *
diff --git a/discord/ext/commands/bot.py b/discord/ext/commands/bot.py
index 724372f7..f523c507 100644
--- a/discord/ext/commands/bot.py
+++ b/discord/ext/commands/bot.py
@@ -128,67 +128,7 @@ def _default_help_command(ctx, *commands : str):
for page in pages:
yield from destination.send(page)
-
-class Bot(GroupMixin, discord.Client):
- """Represents a discord bot.
-
- This class is a subclass of :class:`discord.Client` and as a result
- anything that you can do with a :class:`discord.Client` you can do with
- this bot.
-
- This class also subclasses :class:`GroupMixin` to provide the functionality
- to manage commands.
-
- Attributes
- -----------
- command_prefix
- The command prefix is what the message content must contain initially
- to have a command invoked. This prefix could either be a string to
- indicate what the prefix should be, or a callable that takes in the bot
- as its first parameter and :class:`discord.Message` as its second
- parameter and returns the prefix. This is to facilitate "dynamic"
- command prefixes. This callable can be either a regular function or
- a coroutine.
-
- The command prefix could also be a list or a tuple indicating that
- multiple checks for the prefix should be used and the first one to
- match will be the invocation prefix. You can get this prefix via
- :attr:`Context.prefix`.
- description : str
- The content prefixed into the default help message.
- self_bot : bool
- If ``True``, the bot will only listen to commands invoked by itself rather
- than ignoring itself. If ``False`` (the default) then the bot will ignore
- itself. This cannot be changed once initialised.
- formatter : :class:`HelpFormatter`
- The formatter used to format the help message. By default, it uses a
- the :class:`HelpFormatter`. Check it for more info on how to override it.
- If you want to change the help command completely (add aliases, etc) then
- a call to :meth:`remove_command` with 'help' as the argument would do the
- trick.
- pm_help : Optional[bool]
- A tribool that indicates if the help command should PM the user instead of
- sending it to the channel it received it from. If the boolean is set to
- ``True``, then all help output is PM'd. If ``False``, none of the help
- output is PM'd. If ``None``, then the bot will only PM when the help
- message becomes too long (dictated by more than 1000 characters).
- Defaults to ``False``.
- help_attrs : dict
- A dictionary of options to pass in for the construction of the help command.
- This allows you to change the command behaviour without actually changing
- the implementation of the command. The attributes will be the same as the
- ones passed in the :class:`Command` constructor. Note that ``pass_context``
- will always be set to ``True`` regardless of what you pass in.
- command_not_found : str
- The format string used when the help command is invoked with a command that
- is not found. Useful for i18n. Defaults to ``"No command called {} found."``.
- The only format argument is the name of the command passed.
- command_has_no_subcommands : str
- The format string used when the help command is invoked with requests for a
- subcommand but the command does not have any subcommands. Defaults to
- ``"Command {0.name} has no subcommands."``. The first format argument is the
- :class:`Command` attempted to get a subcommand and the second is the name.
- """
+class BotBase(GroupMixin):
def __init__(self, command_prefix, formatter=None, description=None, pm_help=False, **options):
super().__init__(**options)
self.command_prefix = command_prefix
@@ -683,3 +623,71 @@ class Bot(GroupMixin, discord.Client):
@asyncio.coroutine
def on_message(self, message):
yield from self.process_commands(message)
+
+class Bot(BotBase, discord.Client):
+ """Represents a discord bot.
+
+ This class is a subclass of :class:`discord.Client` and as a result
+ anything that you can do with a :class:`discord.Client` you can do with
+ this bot.
+
+ This class also subclasses :class:`GroupMixin` to provide the functionality
+ to manage commands.
+
+ Attributes
+ -----------
+ command_prefix
+ The command prefix is what the message content must contain initially
+ to have a command invoked. This prefix could either be a string to
+ indicate what the prefix should be, or a callable that takes in the bot
+ as its first parameter and :class:`discord.Message` as its second
+ parameter and returns the prefix. This is to facilitate "dynamic"
+ command prefixes. This callable can be either a regular function or
+ a coroutine.
+
+ The command prefix could also be a list or a tuple indicating that
+ multiple checks for the prefix should be used and the first one to
+ match will be the invocation prefix. You can get this prefix via
+ :attr:`Context.prefix`.
+ description : str
+ The content prefixed into the default help message.
+ self_bot : bool
+ If ``True``, the bot will only listen to commands invoked by itself rather
+ than ignoring itself. If ``False`` (the default) then the bot will ignore
+ itself. This cannot be changed once initialised.
+ formatter : :class:`HelpFormatter`
+ The formatter used to format the help message. By default, it uses a
+ the :class:`HelpFormatter`. Check it for more info on how to override it.
+ If you want to change the help command completely (add aliases, etc) then
+ a call to :meth:`remove_command` with 'help' as the argument would do the
+ trick.
+ pm_help : Optional[bool]
+ A tribool that indicates if the help command should PM the user instead of
+ sending it to the channel it received it from. If the boolean is set to
+ ``True``, then all help output is PM'd. If ``False``, none of the help
+ output is PM'd. If ``None``, then the bot will only PM when the help
+ message becomes too long (dictated by more than 1000 characters).
+ Defaults to ``False``.
+ help_attrs : dict
+ A dictionary of options to pass in for the construction of the help command.
+ This allows you to change the command behaviour without actually changing
+ the implementation of the command. The attributes will be the same as the
+ ones passed in the :class:`Command` constructor. Note that ``pass_context``
+ will always be set to ``True`` regardless of what you pass in.
+ command_not_found : str
+ The format string used when the help command is invoked with a command that
+ is not found. Useful for i18n. Defaults to ``"No command called {} found."``.
+ The only format argument is the name of the command passed.
+ command_has_no_subcommands : str
+ The format string used when the help command is invoked with requests for a
+ subcommand but the command does not have any subcommands. Defaults to
+ ``"Command {0.name} has no subcommands."``. The first format argument is the
+ :class:`Command` attempted to get a subcommand and the second is the name.
+ """
+ pass
+
+class AutoShardedBot(BotBase, discord.AutoShardedClient):
+ """This is similar to :class:`Bot` except that it is derived from
+ :class:`discord.AutoShardedClient` instead.
+ """
+ pass