Convert Figma logo to code with AI

Rapptz logodiscord.py

An API wrapper for Discord written in Python.

14,710
3,746
14,710
130

Top Related Projects

A Python wrapper for the Discord API forked from discord.py

2,706

Pycord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python

Quick Overview

discord.py is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. It allows developers to create bots and automated scripts for Discord servers with ease, leveraging the full power of Discord's API.

Pros

  • Asynchronous design, allowing for efficient handling of multiple tasks
  • Comprehensive documentation and active community support
  • Extensive feature set covering most Discord API functionalities
  • Type hinting support for better code completion and error detection

Cons

  • Steep learning curve for beginners, especially those new to async programming
  • Occasional breaking changes between major versions
  • Limited built-in voice support (requires additional dependencies)
  • Can be resource-intensive for large-scale bots

Code Examples

  1. Creating a simple bot that responds to a command:
import discord
from discord.ext import commands

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

@bot.command()
async def hello(ctx):
    await ctx.send(f'Hello, {ctx.author.name}!')

bot.run('YOUR_BOT_TOKEN')
  1. Sending an embed message:
@bot.command()
async def info(ctx):
    embed = discord.Embed(title="Bot Info", description="A cool Discord bot!", color=0x00ff00)
    embed.add_field(name="Author", value="Your Name", inline=False)
    embed.add_field(name="Server count", value=f"{len(bot.guilds)}", inline=True)
    await ctx.send(embed=embed)
  1. Handling events:
@bot.event
async def on_member_join(member):
    channel = member.guild.system_channel
    if channel is not None:
        await channel.send(f'Welcome {member.mention} to the server!')

Getting Started

  1. Install discord.py:

    pip install discord.py
    
  2. Create a new Python file (e.g., bot.py) and add the following code:

    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix='!')
    
    @bot.event
    async def on_ready():
        print(f'Logged in as {bot.user.name}')
    
    @bot.command()
    async def ping(ctx):
        await ctx.send('Pong!')
    
    bot.run('YOUR_BOT_TOKEN')
    
  3. Replace 'YOUR_BOT_TOKEN' with your actual bot token from the Discord Developer Portal.

  4. Run the bot:

    python bot.py
    

Competitor Comparisons

A Python wrapper for the Discord API forked from discord.py

Pros of nextcord

  • More frequent updates and faster implementation of new Discord features
  • Maintained by an active community, ensuring continued development
  • Supports Python 3.8 and above, offering compatibility with newer Python versions

Cons of nextcord

  • Smaller user base and community compared to discord.py
  • Less extensive documentation and fewer third-party resources available
  • May have occasional compatibility issues with discord.py extensions

Code Comparison

discord.py:

@bot.command()
async def hello(ctx):
    await ctx.send('Hello!')

nextcord:

@bot.slash_command()
async def hello(interaction: nextcord.Interaction):
    await interaction.response.send_message('Hello!')

The main difference in this example is that nextcord uses slash commands by default, which are more modern and offer better integration with Discord's UI. However, both libraries can support traditional prefix commands and slash commands.

Both discord.py and nextcord are powerful libraries for creating Discord bots in Python. discord.py has a larger community and more extensive resources, while nextcord offers more frequent updates and support for newer Discord features. The choice between the two often depends on specific project requirements and personal preferences.

2,706

Pycord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python

Pros of Pycord

  • Actively maintained with more frequent updates
  • Supports newer Discord features like slash commands and buttons
  • Generally faster performance due to optimizations

Cons of Pycord

  • Smaller community and less extensive documentation
  • May have more bugs or instability due to rapid development
  • Some breaking changes from discord.py, requiring code adjustments

Code Comparison

discord.py:

@bot.command()
async def hello(ctx):
    await ctx.send('Hello!')

Pycord:

@bot.slash_command()
async def hello(ctx):
    await ctx.respond('Hello!')

The main difference is that Pycord uses slash commands by default, while discord.py uses traditional prefix commands. Pycord's respond() method is specifically for slash commands, whereas discord.py uses the more general send() method.

Both libraries share similar syntax and structure, making it relatively easy for developers to switch between them. However, Pycord's focus on newer Discord features may require some adjustments to existing discord.py code.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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:

.. 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>`_