pycord
Pycord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python
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:
- 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')
- 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')
- 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:
- Install the Pycord library using pip:
pip install -U pycord
- Create a new Python file (e.g.,
bot.py
) and import the necessary modules:import discord from discord.ext import commands
- 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
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
.. 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
======
Note
Pycord supports Python 3.9
- 3.12
Key Features
- Modern Pythonic API using
async
andawait
. - 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
Top Related Projects
An API wrapper for Discord written in Python.
A multi-function Discord bot
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot