Convert Figma logo to code with AI

Pycord-Development logopycord

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

2,706
458
2,706
67

Top Related Projects

An API wrapper for Discord written in Python.

A multi-function Discord bot

Quick Overview

Pycord is a modern, feature-rich, and easy-to-use Discord API wrapper for Python. It provides a powerful and flexible framework for building Discord bots and applications, with a focus on performance, reliability, and developer experience.

Pros

  • Extensive Functionality: Pycord offers a wide range of features and functionality, including support for slash commands, message components, voice, and more, making it a comprehensive solution for building complex Discord bots.
  • Performance and Reliability: Pycord is built on top of the aiohttp library, which provides efficient and asynchronous HTTP handling, resulting in improved performance and responsiveness.
  • Active Development and Community: The Pycord project has an active development team and a growing community of contributors, ensuring regular updates, bug fixes, and support.
  • Ease of Use: Pycord's intuitive and well-documented API makes it easy for developers, both new and experienced, to get started with building Discord bots.

Cons

  • Learning Curve: While Pycord is generally easy to use, the complexity of the Discord API and the asynchronous nature of the library may present a steeper learning curve for some developers, especially those new to Python or Discord bot development.
  • Dependency on Discord API Changes: As Pycord is a wrapper for the Discord API, it may be affected by changes or updates to the API, which could require updates to the library itself.
  • Limited Support for Older Python Versions: Pycord requires Python 3.8 or later, which may limit its use in some legacy or constrained environments.
  • Potential Performance Overhead: The extensive functionality and features of Pycord may come with a slight performance overhead compared to more lightweight Discord API wrappers.

Code Examples

Here are a few examples of how to use Pycord:

  1. Creating a Basic Bot:
import discord
from discord.ext import commands

intents = discord.Intents.default()
bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')

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

bot.run('your_bot_token_here')
  1. Implementing Slash Commands:
import discord
from discord.commands import slash_command, Option

class MyBot(discord.Bot):
    @slash_command(name="hello", description="Say hello")
    async def hello(self, ctx: discord.ApplicationContext):
        await ctx.respond("Hello, world!")

    @slash_command(name="add", description="Add two numbers")
    async def add(self, ctx: discord.ApplicationContext, a: Option(int, "First number"), b: Option(int, "Second number")):
        result = a + b
        await ctx.respond(f"The result is: {result}")

bot = MyBot()
bot.run('your_bot_token_here')
  1. Handling Message Components:
import discord
from discord.ui import Button, View

class MyView(View):
    @discord.ui.button(label="Click me!", style=discord.ButtonStyle.primary)
    async def button_callback(self, button: discord.ui.Button, interaction: discord.Interaction):
        await interaction.response.send_message("You clicked the button!")

bot = discord.Bot()

@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')

@bot.slash_command(name="button")
async def button(ctx: discord.ApplicationContext):
    await ctx.respond("Click the button!", view=MyView())

bot.run('your_bot_token_here')

Getting Started

To get started with Pycord, follow these steps:

  1. Install the Pycord library using pip:
    pip install -U pycord
    
  2. Create a new Python file (e.g., bot.py) and import the necessary modules:
    import discord
    from discord.ext import commands
    
  3. Create

Competitor Comparisons

An API wrapper for Discord written in Python.

Pros of Pycord

  • Pycord provides a more modern and streamlined API, with a focus on simplicity and ease of use.
  • The library has a larger and more active community, with more contributors and more frequent updates.
  • Pycord includes a number of additional features and utilities that are not present in discord.py, such as a built-in command handler and support for slash commands.

Cons of Pycord

  • Pycord is a relatively new library, and may not have the same level of stability and reliability as the more established discord.py.
  • The documentation for Pycord may not be as comprehensive or well-organized as that of discord.py.
  • Pycord may have a steeper learning curve for developers who are already familiar with discord.py.

Code Comparison

discord.py

@commands.command()
async def ping(self, ctx):
    """Displays the bot's latency."""
    await ctx.send(f'Pong! {round(self.bot.latency * 1000)}ms')

Pycord

@commands.command()
async def ping(self, ctx):
    """Displays the bot's latency."""
    await ctx.reply(f'Pong! {round(self.bot.latency * 1000)}ms')

The main difference between the two code snippets is the use of ctx.send() in discord.py versus ctx.reply() in Pycord. The ctx.reply() method in Pycord automatically mentions the user who triggered the command, which can be a more user-friendly approach in some cases.

A multi-function Discord bot

Pros of Red-DiscordBot

  • Extensive plugin ecosystem with a wide range of features and functionality
  • Highly customizable and modular design, allowing for easy extension and modification
  • Strong community support and active development

Cons of Red-DiscordBot

  • Steeper learning curve compared to Pycord, especially for beginners
  • Larger codebase and more complex architecture, which can make it more challenging to contribute to

Code Comparison

Pycord:

@bot.command()
async def hello(ctx):
    await ctx.send("Hello, world!")

Red-DiscordBot:

@commands.command()
async def hello(self, ctx):
    await ctx.send("Hello, world!")

The main difference in the code is the way the command is defined. Pycord uses the @bot.command() decorator, while Red-DiscordBot uses the @commands.command() decorator. Additionally, Red-DiscordBot requires the self parameter in the command function, while Pycord does not.

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

.. image:: https://raw.githubusercontent.com/Pycord-Development/pycord/master/pycord.png :alt: Pycord v3

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

======

.. image:: https://img.shields.io/pypi/v/py-cord.svg?style=for-the-badge&logo=pypi&color=yellowgreen&logoColor=white :target: https://pypi.python.org/pypi/py-cord :alt: PyPI version info .. image:: https://img.shields.io/pypi/pyversions/py-cord.svg?style=for-the-badge&logo=python&logoColor=white :target: https://pypi.python.org/pypi/py-cord :alt: PyPI supported Python versions .. image:: https://img.shields.io/pypi/dm/py-cord?color=blueviolet&logo=pypi&logoColor=white&style=for-the-badge :target: https://pypi.python.org/pypi/py-cord :alt: PyPI downloads .. image:: https://img.shields.io/github/v/release/Pycord-Development/pycord?include_prereleases&label=Latest%20Release&logo=github&sort=semver&style=for-the-badge&logoColor=white :target: https://github.com/Pycord-Development/pycord/releases :alt: Latest release

.. image:: https://img.shields.io/discord/881207955029110855?label=discord&style=for-the-badge&logo=discord&color=5865F2&logoColor=white :target: https://pycord.dev/discord :alt: Discord server invite

.. image:: https://badges.crowdin.net/badge/dark/crowdin-on-light.png :target: https://translations.pycord.dev/documentation/?utm_source=badge&utm_medium=referral&utm_campaign=badge-add-on :alt: Crowdin | Agile localization for tech companies

======

Key Features

  • Modern Pythonic API using async and await.
  • Proper rate limit handling.
  • Optimised for both speed and memory usage.
  • Full application API support.

Installing

Python 3.9 or higher is required

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

.. code:: sh

# Linux/macOS
python3 -m pip install -U py-cord

# Windows
py -3 -m pip install -U py-cord

Otherwise, to get full voice support, run the following command:

.. code:: sh

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

# Windows
py -3 -m pip install -U py-cord[voice]

To install additional packages for speedup, run the following command:

.. code:: sh

# Linux/macOS
python3 -m pip install -U "py-cord[speed]"
# Windows
py -3 -m pip install -U py-cord[speed]

To install the development version, do the following:

.. code:: sh

$ git clone https://github.com/Pycord-Development/pycord
$ cd pycord
$ python3 -m pip install -U .[voice]

or if you do not want to clone the repository:

.. code:: sh

# Linux/macOS
python3 -m pip install git+https://github.com/Pycord-Development/pycord
# Windows
py -3 -m pip install git+https://github.com/Pycord-Development/pycord

Optional Packages


* `PyNaCl <https://pypi.org/project/PyNaCl/>`__ (for voice support)
* `aiodns <https://pypi.org/project/aiodns/>`__, `brotlipy <https://pypi.org/project/brotlipy/>`__, `cchardet <https://pypi.org/project/cchardet/>`__ (for aiohttp speedup)
* `msgspec <https://pypi.org/project/msgspec/>`__ (for json speedup)

Please note that while installing voice support on Linux, you must install the following packages via your preferred 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.10-dev`` for Python 3.10)

Quick Example
-------------

.. code:: py

    import discord

    bot = discord.Bot()

    @bot.slash_command()
    async def hello(ctx, name: str = None):
        name = name or ctx.author.name
        await ctx.respond(f"Hello {name}!")

    @bot.user_command(name="Say Hello")
    async def hi(ctx, user):
        await ctx.respond(f"{ctx.author.mention} says hello to {user.name}!")

    bot.run("token")

Traditional Commands 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 code examples in the examples directory.

Note: Make sure you do not reveal your bot token to anyone, as it can grant access to your bot.

Useful Links

  • Documentation <https://docs.pycord.dev/en/master/index.html>_
  • Learn how to create Discord bots with Pycord <https://guide.pycord.dev>_
  • Our Official Discord Server <https://pycord.dev/discord>_
  • Official Discord Developers Server <https://discord.gg/discord-developers>_

Translations

.. image:: https://badges.awesome-crowdin.com/translation-200034237-5.png :alt: Translation Status