A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.
- Modern Pythonic API using
async
andawait
. - Proper rate limit handling.
- Optimised in both speed and memory.
- Implements a rich set of OAuth2 APIs. For a non-exhaustive list:
- Connections
- Game Invites
- Game Relationships
- Gateway
- Sessions
- Headless Sessions
- Lobbies
- RPC
- Billing
- Event Subscriptions
- Voice Settings
- Activity Invites
- Store (Entitlements, SKUs)
- Relationships
- Transferring calls from Desktop/Mobile to PlayStation
- User Settings
- Voice
- Calls
- Stream API (This does not include actual UDP protocol implementation)
Python 3.8 or higher is required
Note
For now, you will need to install from GitHub.
Use following command to do so:
# Linux/macOS
python3 -m pip install -U git+https://github.com/MCausc78/discord.py-oauth2
# Windows
py -3 -m pip install -U git+https://github.com/MCausc78/discord.py-oauth2
Instructions below currently will NOT WORK.
To install the library without full voice support, you can just run the following command:
Note
A Virtual Environment 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.
# Linux/macOS
python3 -m pip install -U discord.py-oauth2
# Windows
py -3 -m pip install -U discord.py-oauth2
Otherwise to get voice support you should run the following command:
# Linux/macOS
python3 -m pip install -U "discord.py-oauth2[voice]"
# Windows
py -3 -m pip install -U discord.py-oauth2[voice]
To install the development version, do the following:
$ git clone https://github.com/MCausc78/discord.py-oauth2
$ cd discord.py-oauth2
$ python3 -m pip install -U .[voice]
- 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)
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')
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.