by Rapptz

Rapptz / discord.py

An API wrapper for Discord written in Python.

5.8K Stars 1.7K Forks Last release: Not found MIT License 2.6K Commits 60 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


.. image:: https://discord.com/api/guilds/336642139381301249/embed.png :target: https://discord.gg/r3sSKJJ :alt: Discord server invite .. image:: https://img.shields.io/pypi/v/discord.py.svg :target: https://pypi.python.org/pypi/discord.py :alt: PyPI version info .. image:: https://img.shields.io/pypi/pyversions/discord.py.svg :target: https://pypi.python.org/pypi/discord.py :alt: PyPI supported Python versions

A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.

Key Features

  • Modern Pythonic API using
  • Proper rate limit handling.
  • 100% coverage of the supported Discord API.
  • Optimised in both speed and memory.


Python 3.5.3 or higher is required

To install the library without full voice support, you can just run the following command:

.. code:: sh

# Linux/macOS
python3 -m pip install -U discord.py


py -3 -m pip install -U discord.py

Otherwise to get voice support you should run the following command:

.. code:: sh

# Linux/macOS
python3 -m pip install -U "discord.py[voice]"


py -3 -m pip install -U discord.py[voice]

To install the development version, do the following:

.. code:: sh

$ git clone https://github.com/Rapptz/discord.py
$ cd discord.py
$ python3 -m pip install -U .[voice]

Optional Packages ~~~~~~~~~~~~~~~~~~

  • PyNaCl (for voice support)

Please note that on Linux installing voice you must install the following packages via your favourite package manager (e.g.

, etc) before running the above commands:
  • libffi-dev (or
    on some systems)
  • python-dev (e.g.
    for Python 3.6)

Quick Example

.. code:: py

import discord

class MyClient(discord.Client): async def on_ready(self): print('Logged on as', self.user)

async def on_message(self, message):
    # don't respond to ourselves
    if message.author == self.user:

    if message.content == 'ping':
        await message.channel.send('pong')

client = MyClient() client.run('token')

Bot Example ~~~~~~~~~~~~~

.. code:: py

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='>')

@bot.command() async def ping(ctx): await ctx.send('pong')


You can find more examples in the examples directory.


  • Documentation 
  • Official Discord Server 
  • Discord API 

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.