You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rapptz bb45e050b9 Change Modal inheritance to BaseView instead of View 10 months ago
.github Add typing-extensions to lint workflow 10 months ago
discord Change Modal inheritance to BaseView instead of View 10 months ago
docs Move UnfurledMediaItem and MediaGalleryItem to interactions page 10 months ago
examples Reformat entire project with ruff instead of black 10 months ago
tests Add Interaction.filesize_limit 12 months ago
.git-blame-ignore-revs Create .git-blame-ignore-revs 10 months ago
.gitignore Add build folder to .gitignore 4 years ago
.readthedocs.yml Updated deprecated versioning in .readthedocs.yml 3 years ago
LICENSE Change copyright year to present 5 years ago
MANIFEST.in Ensure COPYING notice is included 12 months ago
README.ja.rst Replace references to Python 3.6 with 3.8 in README 4 years ago
README.rst Add note about using venvs on Linux 2 years ago
pyproject.toml Reformat entire project with ruff instead of black 10 months ago
requirements.txt Use fallback audioop package for Python v3.13 or higher 2 years ago
setup.py Add raw presence update evemt 1 year ago

README.rst

discord.py
==========

.. 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 ``async`` and ``await``.
- Proper rate limit handling.
- Optimised in both speed and memory.

Installing
----------

**Python 3.8 or higher is required**

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

.. note::

A `Virtual Environment <https://docs.python.org/3/library/venv.html>`__ is recommended to install
the library, especially on Linux where the system Python is externally managed and restricts which
packages you can install on it.


.. code:: sh

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

# Windows
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]"

# Windows
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 <https://pypi.org/project/PyNaCl/>`__ (for voice support)

Please note that when installing voice support on Linux, you must install the following packages via your favourite package manager (e.g. ``apt``, ``dnf``, etc) before running the above commands:

* libffi-dev (or ``libffi-devel`` on some systems)
* python-dev (e.g. ``python3.8-dev`` for Python 3.8)

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:
return

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

intents = discord.Intents.default()
intents.message_content = True
client = MyClient(intents=intents)
client.run('token')

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

.. code:: py

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='>', intents=intents)

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

bot.run('token')

You can find more examples in the examples directory.

Links
------

- `Documentation <https://discordpy.readthedocs.io/en/latest/index.html>`_
- `Official Discord Server <https://discord.gg/r3sSKJJ>`_
- `Discord API <https://discord.gg/discord-api>`_