mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-19 15:36:02 +00:00
When accessing the latencies property on an AutoShardedClient when none of shards are ready, we get a ZeroDivisionError. An example of this can be seen here. ```py class StatsBot(commands.AutoShardedBot): def __init__(self): super().__init__(command_prefix=None) self._add_commands() def _add_commands(self): '''Adds commands automatically''' for name, attr in inspect.getmembers(self): if isinstance(attr, commands.Command): self.add_command(attr) ``` When iterating through this custom client's it accesses the latencies property when no shards are ready, therefore it raises the error. A quick fix for this would be to return None if no shards are ready.
discord.py ========== .. image:: https://img.shields.io/pypi/v/discord.py.svg :target: https://pypi.python.org/pypi/discord.py .. image:: https://img.shields.io/pypi/pyversions/discord.py.svg :target: https://pypi.python.org/pypi/discord.py discord.py is an API wrapper for Discord written in Python. This was written to allow easier writing of bots or chat logs. Make sure to familiarise yourself with the API using the `documentation <http://discordpy.rtfd.org/en/latest>`__. Breaking Changes --------------- The discord API is constantly changing and the wrapper API is as well. There will be no effort to keep backwards compatibility in versions before ``v1.0.0``. I recommend that you follow the discussion in the `unofficial Discord API discord channel <https://discord.gg/0SBTUU1wZTUzBx2q>`__ and update your installation periodically. I will attempt to make note of breaking changes in the API channel so make sure to subscribe to library news by typing ``?sub news`` in the channel. Installing ---------- To install the library without full voice support, you can just run the following command: .. code:: sh python3 -m pip install -U discord.py Otherwise to get voice support you should run the following command: .. code:: sh python3 -m pip install -U discord.py[voice] To install the development version, do the following: .. code:: sh python3 -m pip install -U https://github.com/Rapptz/discord.py/archive/master.zip#egg=discord.py[voice] or the more long winded from cloned source: .. code:: sh $ git clone https://github.com/Rapptz/discord.py $ cd discord.py $ python3 -m pip install -U .[voice] Please note that on Linux installing voice you must install the following packages via your favourite package manager (e.g. ``apt``, ``yum``, etc) before running the above command: * libffi-dev (or ``libffi-devel`` on some systems) * python-dev (e.g. ``python3.5-dev`` for Python 3.5) Quick Example ------------ .. code:: py import discord import asyncio class MyClient(discord.Client): async def on_ready(self): print('Logged in as') print(self.user.name) print(self.user.id) print('------') async def on_message(self, message): # don't respond to ourselves if message.author == self.user: return if message.content.startswith('!test'): counter = 0 tmp = await message.channel.send('Calculating messages...') async for msg in message.channel.history(limit=100): if msg.author == message.author: counter += 1 await tmp.edit(content='You have {} messages.'.format(counter)) elif message.content.startswith('!sleep'): with message.channel.typing(): await asyncio.sleep(5.0) await message.channel.send('Done sleeping.') client = MyClient() client.run('token') Note that in Python 3.4 you use ``@asyncio.coroutine`` instead of ``async def`` and ``yield from`` instead of ``await``. You can find examples in the examples directory. Requirements ------------ * Python 3.4.2+ * ``aiohttp`` library * ``websockets`` library * ``PyNaCl`` library (optional, for voice only) - On Linux systems this requires the ``libffi`` library. You can install in debian based systems by doing ``sudo apt-get install libffi-dev``. Usually ``pip`` will handle these for you.
Languages
Python
100%