Disnake
An API wrapper for Discord written in Python.
Install / Use
/learn @DisnakeDev/DisnakeREADME
disnake
<p align="center"> <img src="https://img.shields.io/github/actions/workflow/status/DisnakeDev/disnake/lint-test.yml?branch=master&style=flat-square"></img> <a href="https://discord.gg/disnake"><img src="https://img.shields.io/discord/808030843078836254?style=flat-square&color=5865f2&logo=discord&logoColor=ffffff&label=discord" alt="Discord server invite" /></a> <a href="https://pypi.org/project/disnake/"><img src="https://img.shields.io/pypi/v/disnake.svg?style=flat-square" alt="PyPI version info" /></a> <a href="https://pypi.org/project/disnake/"><img src="https://img.shields.io/pypi/pyversions/disnake.svg?style=flat-square" alt="PyPI supported Python versions" /></a> <a href="https://github.com/DisnakeDev/disnake/commits"><img src="https://img.shields.io/github/commit-activity/w/DisnakeDev/disnake.svg?style=flat-square" alt="Commit activity" /></a> </p>A modern, easy to use, feature-rich, and async-ready API wrapper for Discord written in Python.
Key Features
- Proper rate limit handling.
- Type-safety measures.
- FastAPI-like slash command syntax.
<sup>The syntax and structure of discord.py 2.0 is preserved.</sup>
Installing
Python 3.10 or higher is required.
To install the library without full voice support, you can just run the following command:
# Linux/macOS
python3 -m pip install -U disnake
# Windows
py -3 -m pip install -U disnake
Installing disnake with full voice support requires you to replace disnake here, with disnake[voice]. To learn more about voice support (or installing the development version), please visit this section of our guide.
Note that voice support on Linux requires installation of libffi-dev and python-dev packages, via your preferred package manager (e.g. apt, dnf, etc.) before running the following commands.
Versioning
This project does not quite follow semantic versioning; for more details, see version guarantees.
To be on the safe side and avoid unexpected breaking changes, pin the dependency to a minor version (e.g. disnake==a.b.* or disnake~=a.b.c) or an exact version (e.g. disnake==a.b.c).
Quick Example
Slash Commands Example
import disnake
from disnake.ext import commands
bot = commands.InteractionBot(test_guilds=[12345])
@bot.slash_command()
async def ping(inter):
await inter.response.send_message("Pong!")
bot.run("BOT_TOKEN")
Context Menus Example
import disnake
from disnake.ext import commands
bot = commands.InteractionBot(test_guilds=[12345])
@bot.user_command()
async def avatar(inter, user):
embed = disnake.Embed(title=str(user))
embed.set_image(url=user.display_avatar.url)
await inter.response.send_message(embed=embed)
bot.run("BOT_TOKEN")
Prefix Commands Example
import disnake
from disnake.ext import commands
bot = commands.Bot(command_prefix=commands.when_mentioned)
@bot.command()
async def ping(ctx):
await ctx.send("Pong!")
bot.run("BOT_TOKEN")
You can find more examples in the examples directory.
<br> <p align="center"> <a href="https://docs.disnake.dev/">Documentation</a> ⁕ <a href="https://guide.disnake.dev/">Guide</a> ⁕ <a href="https://discord.gg/disnake">Discord Server</a> ⁕ <a href="https://discord.gg/discord-developers">Discord Developers</a> </p> <br>Related Skills
imsg
342.5kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
85.3kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.

