/NAFF

A Python API wrapper for Discord

Primary LanguagePythonMIT LicenseMIT

PyPI Downloads Code style: black pre-commit CodeQL Discord Documentation Status

Depreciation Notice

Please note the naff package is now deprecated. Please migrate to interactions.py, where future development will continue. https://github.com/interactions-py/interactions.py Interactions.py V5 is a combined release between interactions.py and naff. Migration is easy, and should only take an hour at most.

What is this?

This is NAFF, a python API wrapper for Discord. NAFF is intended to be fast, easy to use, and easily modified to suit your needs.

Features:

  • ✅ 100% coverage of the application commands API
  • ✅ Dynamic cache with TTL support
  • ✅ Modern and Pythonic API
  • ✅ Proper rate-limit handling
  • ✅ Feature parity with most other Discord API wrappers

Is this just another Discord.py fork?

While this library shares features and some stylistic choices with discord.py, it is completely separate from them. We think discord.py is a fantastic library, but we disagree with the direction and design decisions that were made by it.

How do I use this?

Here is a basic example:

from naff import Client, Button, ButtonStyles, CommandTypes, context_menu, prefixed_command, listen

bot = Client(sync_interactions=True)


@listen()
async def on_startup():
    print("Ready")
    print(f"This bot is owned by {bot.owner}")


@prefixed_command()
async def test_button(ctx):
    await ctx.send("Blurple button example!", components=Button(ButtonStyles.BLURPLE, "Click me"))


@context_menu(name="User menu", context_type=CommandTypes.USER, scopes=[931832853770149918])
async def user_context(ctx):
    await ctx.send("Context menu example!", ephemeral=True)


bot.start("TOKEN")

For more examples check out our examples repo or the docs. You also can explore projects with the NAFF topic or older dis-snek topic.

If you get stuck join our Discord server.

"Can I contribute to this project?"

Of course, we welcome all contributions to this library. Just ensure you follow our requirements. If youre stuck for things to contribute, check out our GitHub Projects for inspiration.

Links: