An API wrapper for Discord written in Python.

Overview

Disnake Banner

disnake

Discord server invite PyPI version info PyPI supported Python versions Commit activity

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

About disnake

All the contributors and developers, associated with disnake, are trying their best to add new features to the library as soon as possible. We strive to revive the greatest Python wrapper for Discord API and keep it up to date.

Key Features

  • Modern Pythonic API using async and await.
  • Added features for ease of coding
  • 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:

# Linux/macOS
python3 -m pip install -U disnake

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

Otherwise to get voice support you should run the following command:

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

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

To install the development version, do the following:

$ git clone https://github.com/DisnakeDev/disnake
$ cd disnake
$ python3 -m pip install -U .[voice]

Optional Packages

Please note that on Linux installing voice 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.6-dev for Python 3.6)

Quick Example

import disnake

class MyClient(disnake.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')

client = MyClient()
client.run('token')

Bot Example

import disnake
from disnake.ext import commands

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

@bot.command()
async def ping(ctx):
    await ctx.send('pong')

bot.run('token')

Slash Commands Example

import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix='>', test_guilds=[12345])

@bot.slash_command()
async def ping(inter):
    await inter.response.send_message('pong')

bot.run('token')

Context Menus Example

import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix='>', test_guilds=[12345])

@bot.user_command()
async def avatar(inter):
    embed = disnake.Embed(title=str(inter.target))
    embed.set_image(url=inter.target.avatar.url)
    await inter.response.send_message(embed=embed)

bot.run('token')

You can find more examples in the examples directory.

Links

Comments
  • cogs

    cogs

    Summary

    The slash commands in cogs dont work. It used to work fine

    Reproduction Steps

    just loading the cogs

    Minimal Reproducible Code

    No response

    Expected Results

    shows the slash commands in the (test_guilds)

    Actual Results

    The commands work fine but slash commands dont even show up in the specific guild (test_guilds)

    Intents

    members

    System Information

    - Python v3.10.2-final
    - disnake v2.5.1-final
        - disnake pkg_resources: v2.5.1
    - aiohttp v3.7.4.post0
    - system info: Windows 10 10.0.19044
    

    Checklist

    • [X] I have searched the open issues for duplicates.
    • [X] I have shown the entire traceback, if possible.
    • [X] I have removed my token from display, if visible.

    Additional Context

    No response

    unconfirmed bug 
    opened by Saadelamali 18
  • New colour (invisible)

    New colour (invisible)

    Summary

    Adds a new colour (invisible) to disnake.Colour which blends in with the embed's colour

    Checklist

    • [ x] If code changes were made then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [ ] I have formatted the code properly by running black .
    • [ ] This PR fixes an issue
    • [x ] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement 
    opened by Kraots 16
  • feat(client)!: Make kwargs for 'public api' Client classes explicit, disallow superfluous kwargs

    feat(client)!: Make kwargs for 'public api' Client classes explicit, disallow superfluous kwargs

    Summary

    This PR aims to improve two things. Firstly, passing 'incorrect'/unused kwargs to Client or any of its subclasses will now error. For example,

    bot = commands.Bot("!", sync_command_debug=True)
    

    would run fine in the current version of disnake but do nothing, as the actual kwarg is sync_commands_debug. With the changes in this PR, this would raise an error instead.

    Furthermore, disnake.Client, disnake.AutoShardedClient, disnake.Bot, dinake.AutoShardedBot, disnake.InteractionBot and disnake.AutoShardedInteractionBot now all have their __init__s set in such a way that all possible kwargs display (unless I missed any, though I don't believe I did).

    Checklist

    • [x] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint or pre-commit run --all-files
    • [x] This PR fixes an issue
    • [ ] This PR adds something new (e.g. new method or parameters)
    • [x] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement breaking change 
    opened by Chromosomologist 15
  • button / select decorator support for Button & Select subclasses

    button / select decorator support for Button & Select subclasses

    Summary

    This PR adds support to button & select decorators for custom Button & Select subclasses

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint or pre-commit run --all-files
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement p: medium 
    opened by Enegg 14
  • feat: pass deserialization exceptions in gateway event handler to loop exception handler

    feat: pass deserialization exceptions in gateway event handler to loop exception handler

    Summary

    Changes DiscordWebSocket.received_message to pass payload deserialization exceptions to the running loop's exception handler instead of letting them propagate up and crash the shard/bot.

    This prevents bots from just outright crashing if an event couldn't be parsed; Ideally, deserializing the payloads should always work, but history has shown that unannounced API changes unfortunately happen from time to time (even if accidental, like text-in-voice in December :^) ), and the library can't always perfectly account for that.

    note that this is really more of a proposal, feel free to suggest alternative implementations or ideas

    Checklist

    • [x] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [x] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement breaking change 
    opened by shiftinv 13
  • docs: clarify `disnake.Embed` re-using `disnake.File` objects when editing messages

    docs: clarify `disnake.Embed` re-using `disnake.File` objects when editing messages

    Summary

    • Closes GH-748

    Checklist

    • [ ] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [ ] I have formatted the code properly by running task lint
      • [ ] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [ ] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [x] This PR is not a code change (e.g. documentation, README, ...)
    t: documentation 
    opened by Snipy7374 10
  • docs: split changelog to current and legacy versions

    docs: split changelog to current and legacy versions

    Summary

    Unlinks the v1.0 migration page from the main index (keeping the only reference in the changelog), and moves the 0.x/1.x changelogs to a separate page.

    Checklist

    • [ ] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [ ] I have formatted the code properly by running task lint
      • [ ] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [ ] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [x] This PR is not a code change (e.g. documentation, README, ...)
    t: documentation p: low 
    opened by shiftinv 10
  • feat: implement `clean_history_duration` parameter for bans

    feat: implement `clean_history_duration` parameter for bans

    Summary

    Implements delete_message_seconds through a new clean_history_duration parameter, while keeping backward compatibility with delete_message_days.

    ~~It doesn't seem like deleting a few minutes' worth of messages works as expected, which could indicate that the lower bound isn't actually 0. Might be a bug though, see the referenced api-docs issue.~~

    Resolves #657.

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement t: api support 
    opened by shiftinv 10
  • feat: auto moderation

    feat: auto moderation

    Summary

    Implements routes/objects/events related to the new auto moderation feature. Still a bunch of TODOs, particularly regarding naming (would love some input on that).

    ref: https://github.com/discord/discord-api-docs/pull/4860

    Full list of changes:

    • updated AuditLogEntry and AuditLogDiff
    • added new AuditLogAction enum values
    • new types: auto_moderation.AutoModAction, .AutoModTriggerMetadata, .AutoModRule, .AutoModActionExecution
    • new types: enums.AutoModTriggerType, .AutoModEventType, .AutoModActionType
    • new type: flags.AutoModKeywordPresets (including new flags.ListBaseFlags)
    • two new intents (+ one alias for both)
    • new methods: Guild.fetch_automod_rule, Guild.fetch_automod_rules, .create_automod_rule
    • gateway events: on_auto_moderation_rule_create, on_auto_moderation_rule_update, on_auto_moderation_rule_delete, on_auto_moderation_action_execution
    • guild feature: AUTO_MODERATION
    • ~~probably new bugs~~
    • documentation for everything

    blocked by

    • #532
    • #540, currently included through https://github.com/DisnakeDev/disnake/pull/530/commits/db5e3d77dd354ad15ff0a29892b51cf751a7c3bb

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement t: api support p: high 
    opened by shiftinv 10
  • Add attachment descriptions

    Add attachment descriptions

    Summary

    This implements attachment descriptions; they are already available, but gated behind an experiment in clients (2021-09_inline_attachment_uploads).

    There is a change in the attachment handling, which would've generally resulted in previous attachments not being kept by default on edit anymore, if new files are also being uploaded. This would affect types that don't contain information about existing attachments, i.e. all types except Message and InteractionMessage. To fix this, the original message will be fetched for those types and existing attachments will carry over from that, if new files are being added and the developer didn't explicitly provide the attachments kwarg.

    Providing existing and new attachments in the attachments list like this when new files are being uploaded will be required for API v10 at the latest. API v8 itself doesn't require it yet, however it is already needed when using attachment descriptions.

    TODO

    • ~~[ ] Check if attachment:// filenames in embeds keep working as intended~~

    Checklist

    • [x] If code changes were made then they have been tested.
      • [x] I have updated the documentation to reflect the changes.
    • [ ] This PR fixes an issue.
    • [x] This PR adds something new (e.g. new method or parameters).
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement 
    opened by shiftinv 10
  • fix(misc): ignore `lib/` created by virtualenv

    fix(misc): ignore `lib/` created by virtualenv

    Summary

    virtualenv creates lib/ folder, which is not ignored by Git yet it's not included in MANIFEST.in, making check-manifest complain. This PR updates .gitignore to ignore lib/ folder, too.

    Checklist

    • [x] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [ ] I have formatted the code properly by running task lint
      • [ ] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [ ] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: meta skip news 
    opened by ItsAleph 9
  • adds support for events enums

    adds support for events enums

    Summary

    • Closes GH-895

    Any suggestion or help is appreciated about events enums groups and for the wording in the changelog entry.


    Note:

    • I still need to document the new enumerations on api.rst, though i was thinking that we could maybe automate something to use the already existing docstrings

    Checklist

    • [x] If code changes were made, then they have been tested
      • [ ] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement s: in progress s: needs review t: refactor/typing/lint 
    opened by Snipy7374 0
  • Add feature: new property `snowflake` to `Hashable` class.

    Add feature: new property `snowflake` to `Hashable` class.

    Summary

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement s: needs review 
    opened by yatochka-dev 0
  • `Cog.add_command`, `.remove_command`, etc.

    `Cog.add_command`, `.remove_command`, etc.

    Summary

    see title.

    What is the feature request for?

    disnake.ext.commands

    The Problem

    There's currently no proper way of dynamically adding/removing commands from cogs, other than directly messing around with internal fields like __cog_commands__.

    The Ideal Solution

    New methods like Cog.add_command, .remove_command, as well as complementary ones for slash/user/message application commands.

    The Current Solution

    modifying __cog_commands__, which isn't documented

    Additional Context

    suggested here: https://canary.discord.com/channels/808030843078836254/913779868985090089/1058180711095484416

    feature request 
    opened by shiftinv 0
  • feat(Guild): add support for raid alerts

    feat(Guild): add support for raid alerts

    Summary

    https://github.com/discord/discord-api-docs/pull/5778

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement t: api support s: needs review s: waiting for api/docs 
    opened by Victorsitou 0
  • feat(AutoMod): add support for `mention_raid_protection_enabled`

    feat(AutoMod): add support for `mention_raid_protection_enabled`

    Summary

    Implements https://github.com/discord/discord-api-docs/pull/5778.

    Checklist

    • [x] If code changes were made, then they have been tested
      • [x] I have updated the documentation to reflect the changes
      • [x] I have formatted the code properly by running task lint
      • [x] I have type-checked the code by running task pyright
    • [ ] This PR fixes an issue
    • [x] This PR adds something new (e.g. new method or parameters)
    • [ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
    • [ ] This PR is not a code change (e.g. documentation, README, ...)
    t: enhancement t: api support s: needs review s: waiting for api/docs 
    opened by Victorsitou 0
  • Support for localizations of various text fields

    Support for localizations of various text fields

    Summary

    Add support for the existing localizations protocol to be easily used anywhere user visible text appears.

    What is the feature request for?

    The core library

    The Problem

    Currently, the library only provides means to handle localizations automatically for descriptions and parameters of application commands. The localizations protocol is exposed as a part of the API, but the use of it is cumbersome. Additionally, it does not natively support strings where substitution/formatting with dynamic values needs to occur.

    The Ideal Solution

    Allow for the use of Localized anywhere text is rendered on the user's end: content param of .send methods; Embed's title, description and fields; labels, placeholders etc. of components.

    await inter.response.send_message(Localized("Example text.", key="EXAMPLE_RESPONSE"))
    

    As an extension of current functionality, a way to provide values for a supposed template string could be added, since unlike app command descriptions and params, many strings are bound to have dynamic values. This could be done possibly by adding a keyword to Localized's constructor, or a method like .format:

    message = Localized("Example template: {}.", key="EXAMPLE_RESPONSE", values=(1,)) # tuple or dict
    # or
    message = Localized("Example template: {}.", key="EXAMPLE_RESPONSE").format(1)
    await inter.response.send_message(message)
    

    The Current Solution

    One has to write boilerplate code like this

    locs = inter.bot.i18n.get("EXAMPLE_RESPONSE") or {}
    await inter.response.send_message(locs.get(str(inter.locale), "Example text."))
    

    or write some sort of wrapper function, which would always need to be passed the i18n store, as well as the current locale. The upside of this way is it natively supports template strings, since we directly access said string and can format it afterwards.

    Additional Context

    No response

    feature request 
    opened by Enegg 0
Releases(v2.7.0)
  • v2.7.0(Nov 1, 2022)

    What's Changed

    This release adds support for python 3.11 and the new selects released by Discord.

    See the docs for how to use these new selects.

    Breaking Changes

    • Properly document that Message.system_content may return None. While this is documented as a breaking change, this function always could return None if the message type was not recognised. (#766)
    • Rename InteractionDataResolved.get() to get_by_id(). (#814)

    Deprecations

    New Features

    Bug Fixes

    • Add the missing attributes for PermissionOverwrite: use_application_commands and use_embedded_activities. (#777)
    • Ensure that embed fields are copied properly by Embed.copy() and that the copied embed is completely separate from the original one. (#792)
    • Fix an issue with Member.ban() erroring when the delete_message_days parameter was provided. (#810)
    • Try to get threads used in interactions (like threads in command arguments) from the cache first, before creating a new instance. (#814)
    • Fix creation of threads in text channels without Permissions.manage_threads. (#818)
    • Fix off-by-one error in AutoModKeywordPresets values. (#820)
    • Update event loop handling to avoid warnings when running on Python 3.11. (#827)
    • [ext.commands] Fix a case where optional variadic arguments could have infinite loops in parsing depending on the user input. (#825)

    Documentation

    • Speed up page load by changing hoverxref tooltips to be lazily loaded. (#393)
    • Remove reference to the v1.0 migration guide from the main index page, and move legacy changelogs to a separate page. (#697)
    • Update sphinx from version 5.1 to 5.3. (#764, #821)Add a note warning mentioning that using a disnake.File object as file kwarg makes a disnake.Embed not reusable. (#786)
    • Update broken Discord API Docs links, add :ddocs: role for easily creating links to the API documentation. (#793)
    • Add a custom 404 page for when the navigated page does not exist. (#797)

    Miscellaneous

    • Increase the upper bound for the aiohttp dependency from <3.9 to <4. (#789)
    • Use importlib.metadata instead of the deprecated pkg_resources in the cli for displaying the version. (#791)
    • [ext.commands] Add missing py.typed marker. (#784)
    • [ext.tasks] Add missing py.typed marker. (#784)

    Full changelog: https://docs.disnake.dev/en/stable/whats_new.html#v2-7-0 Git history: https://github.com/DisnakeDev/disnake/compare/v2.6.0...v2.7.0

    Source code(tar.gz)
    Source code(zip)
    disnake-2.7.0-py3-none-any.whl(1015.07 KB)
    disnake-2.7.0.tar.gz(951.05 KB)
  • v2.6.2(Nov 1, 2022)

    Bug Fixes


    Full changelog: https://docs.disnake.dev/en/v2.6.2/whats_new.html#v2-6-2 Git history: https://github.com/DisnakeDev/disnake/compare/v2.6.1...v2.6.2

    Source code(tar.gz)
    Source code(zip)
    disnake-2.6.2-py3-none-any.whl(997.54 KB)
    disnake-2.6.2.tar.gz(941.05 KB)
  • v2.6.1(Oct 20, 2022)

    Bug Fixes

    • Ensure that embed fields are copied properly by Embed.copy() and that the copied embed is completely separate from the original one. (#792)
    • Fix an issue with Member.ban() erroring when the delete_message_days parameter was provided. (#810)

    Full changelog: https://docs.disnake.dev/en/v2.6.1/whats_new.html#v2-6-1 Git history: https://github.com/DisnakeDev/disnake/compare/v2.6.0...v2.6.1

    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Sep 29, 2022)

    This release adds support for new forum channel features (like tags) as well as auto moderation, among other things. See below for more.

    Also note the breaking changes listed below, which may require additional code changes.

    Full changelog: https://docs.disnake.dev/en/stable/whats_new.html#v2-6-0 Git history: https://github.com/DisnakeDev/disnake/compare/v2.5.0...v2.6.0

    New Contributors

    • @thehaffk made their first contribution in https://github.com/DisnakeDev/disnake/pull/516
    • @davids-tips made their first contribution in https://github.com/DisnakeDev/disnake/pull/541
    • @toolifelesstocode made their first contribution in https://github.com/DisnakeDev/disnake/pull/566
    • @ResetXD made their first contribution in https://github.com/DisnakeDev/disnake/pull/571
    • @Skelmis made their first contribution in https://github.com/DisnakeDev/disnake/pull/576
    • @EmreTech made their first contribution in https://github.com/DisnakeDev/disnake/pull/612
    • @filefly made their first contribution in https://github.com/DisnakeDev/disnake/pull/620
    • @vcokltfre made their first contribution in https://github.com/DisnakeDev/disnake/pull/623
    • @Enegg made their first contribution in https://github.com/DisnakeDev/disnake/pull/281
    • @zachnieto made their first contribution in https://github.com/DisnakeDev/disnake/pull/567
    • @ItsAleph made their first contribution in https://github.com/DisnakeDev/disnake/pull/661
    • @ChristopherJHart made their first contribution in https://github.com/DisnakeDev/disnake/pull/636
    • @Snipy7374 made their first contribution in https://github.com/DisnakeDev/disnake/pull/730
    Source code(tar.gz)
    Source code(zip)
    disnake-2.6.0-py3-none-any.whl(997.46 KB)
    disnake-2.6.0.tar.gz(940.22 KB)
  • v2.5.3(Sep 29, 2022)

  • v2.4.2(Sep 2, 2022)

    Includes a backport of a fix relating to the message content intent always being requested by the client.

    Changelog: https://docs.disnake.dev/en/v2.4.x/whats_new.html#v2-4-2

    Source code(tar.gz)
    Source code(zip)
  • v2.5.2(Jul 27, 2022)

    Includes several bug fixes and documentation updates.

    More details and full changelog: https://docs.disnake.dev/en/v2.5.x/whats_new.html#v2-5-2

    Source code(tar.gz)
    Source code(zip)
  • v2.4.1(Jul 27, 2022)

    Includes several bug fixes and documentation updates.

    More details and full changelog: https://docs.disnake.dev/en/v2.4.x/whats_new.html#v2-4-1

    Source code(tar.gz)
    Source code(zip)
  • v2.5.1(May 10, 2022)

    Small patch release to fix an issue with the @slash.autocomplete(...) decorator in v2.5.0.

    Changelog: https://docs.disnake.dev/en/latest/whats_new.html#v2-5-1

    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(May 7, 2022)

    This version adds support for API v10 (which comes with a few breaking changes), forum channels, localizations, permissions v2, improves API coverage by adding support for previously missing features like guild previews, widgets, or welcome screens, and contains several miscellaneous enhancements and bugfixes.

    Regarding the message content intent: Note that earlier versions will continue working fine after the message content intent deadline (August 31st 2022), as long as the intent is enabled in the developer portal. However, from this version (2.5.0) onward, the intent needs to be enabled in the developer portal and your code. See this page of the guide for more information. If you do not have access to the intent yet, you can temporarily continue using API v9 by calling disnake.http._workaround_set_api_version(9) before connecting, which will keep sending message content before the intent deadline, even with the intent disabled.

    More details and full changelog: https://docs.disnake.dev/en/latest/whats_new.html#v2-5-0

    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Feb 14, 2022)

  • v2.3.2(Feb 11, 2022)

  • v2.2.3(Feb 11, 2022)

  • v2.3.1(Feb 5, 2022)

  • v2.3.0(Dec 21, 2021)

  • v2.2.2(Nov 16, 2021)

  • v2.2.1(Nov 3, 2021)

  • v2.2.0(Nov 1, 2021)

  • v2.1.5(Oct 25, 2021)

    What's new:

    • min_value, max_value (float) kwargs in disnake.Option
    • min_value, max_value, gt, lt, ge, le (float) kwargs in disnake.ext.commands.Param (here gt and ge are aliases of min_value, lt and le are aliases of max_value)
    • disnake.InteractionReference
    • disnake.Message.interaction attribute (an instance of InteractionReference)
    • disnake.UnresolvedGuildApplicationCommandPermissions
    • owner (bool) kwarg in disnake.ext.commands.guild_permissions decorator

    Fixed:

    • Command deletions on reconnections
    • Unfinished sync tasks on loop termination

    Notes:

    • In v2.1.4 we fixed a a bug with permissions sync
    Source code(tar.gz)
    Source code(zip)
  • v2.1.3(Oct 17, 2021)

    Changelog: https://disnake.readthedocs.io/en/latest/whats_new.html#v2-1-2

    Summary:

    • Slash commands
    • Context menus
    • Application command permissions
    • Role icons
    Source code(tar.gz)
    Source code(zip)
A Anything goes Discord bot written in python and uses the wrapper Discord.py

GerardTheWizard A Anything goes Discord bot written in python and uses the wrapper Discord.py What can he do? Allow users to level up through typing,

null 1 May 5, 2022
An API wrapper for Discord written in Python.

discord.py A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. Key Features Modern Pythonic API using asyn

Danny 12k Jan 8, 2023
A simple API wrapper for Discord written in Python.

AIOCord This project is work in progress not for production use A simple asynchronous API wrapper around Discord API written in Python. Inspiration Th

Izhar Ahmad 3 Dec 7, 2021
A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.

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

Senpai Development 4 Nov 5, 2021
A modern,feature-rich, and async ready API wrapper for Discord written in Python

discord.io A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. Key Features Modern Pythonic API using asyn

Vincent 18 Jan 2, 2023
A Discord API Wrapper for Userbots/Selfbots written in Python.

DisCum A simple, easy to use, non-restrictive, synchronous Discord API Wrapper for Selfbots/Userbots written in Python. -using requests and websockets

Liam 450 Dec 27, 2022
An API wrapper for Discord written in Python.

HCord A fork of discord.py project. HCord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. Key Featu

HCord 0 Jul 30, 2022
A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.

disfork A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. Key Features Modern Pythonic API using async a

null 2 Feb 9, 2022
Pycord, a maintained fork of discord.py, is a python wrapper for the Discord API

pycord A fork of discord.py. PyCord is a modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. Key Features Mo

Pycord Development 2.3k Dec 31, 2022
An asyncio Python wrapper around the Discord API, forked off of Rapptz's Discord.py.

Novus A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. A full fork of Rapptz's Discord.py library, with

Voxel Fox 60 Jan 3, 2023
PyDiscord, a maintained fork of discord.py, is a python wrapper for the Discord API.

discord.py A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python. The Future of discord.py Please read the gi

Omkaar 1 Jan 16, 2022
A small and fun Discord Bot that is written in Python and discord-interactions (with discord.py)

Articuno (discord-interactions) A small and fun Discord Bot that is written in Python and discord-interactions (with discord.py) Get started If you wa

Blue 8 Dec 26, 2022
Async ready API wrapper for Revolt API written in Python.

Mutiny Async ready API wrapper for Revolt API written in Python. Installation Python 3.9 or higher is required To install the library, you can just ru

null 16 Mar 29, 2022
This an API wrapper library for the OpenSea API written in Python 3.

OpenSea NFT API Python 3 wrapper This an API wrapper library for the OpenSea API written in Python 3. The library provides a simplified interface to f

Attila Tóth 159 Dec 26, 2022
An API wrapper for discord; maintained and improved from discord.py

Fusion.py Documentation What is Fusion.py you might ask; Fusion.py is a Discord.py fork that has most of the good features from most of the big Discor

Senarc Studios 5 Apr 19, 2022
EpikCord.py - This is an API Wrapper for Discord's API for Python

EpikCord.py - This is an API Wrapper for Discord's API for Python! We've decided not to fork discord.py and start completely from scratch for a new, better structuring system!

EpikHost 28 Oct 10, 2022
An API wrapper around Discord API.

NeoCord This project is work in progress not for production use. An asynchronous API wrapper around Discord API written in Python. Features Modern API

Izhar Ahmad 14 Jan 3, 2022
Aws-lambda-requests-wrapper - Request/Response wrapper for AWS Lambda with API Gateway

AWS Lambda Requests Wrapper Request/Response wrapper for AWS Lambda with API Gat

null 1 May 20, 2022
A Python wrapper for discord slash-commands, designed to extend discord.py.

dislash.py An extending library for discord.py that allows to build awesome slash-commands. ⭐

null 173 Dec 19, 2022