Skip to main content

Collection of easy to use, beginner friendly but powerful, orthogonal tools to speed up discord bots development (discord.py)

Project description

forthebadge made-with-python

PyPI status PyPI version fury.io Downloads Documentation Status PyPI license

dpytools

Collection of easy to use, beginner friendly but powerful, orthogonal tools to speed up discord bots development (discord.py)

Features

  • The batteries of discord.py
  • Easy to read type-hinted code
  • Active development
  • Minimal dependencies

Instalation

Install the latest version of the library with pip.

pip install -U dpytools

Useful links:

Use Examples:

The library has a couple of reaction menus that are really easy to use. dpytools.menus.arrows takes a list of embeds and displays it using a reaction menu.

@bot.command()
async def arrow_menu(ctx):
    """
    This command sends a list of embeds in a reaction menu with emojis aid in navigation
    """
    from dpytools.menus import arrows
    long_list_of_embeds = [discord.Embed(...), ...]
    await arrows(ctx, long_list_of_embeds)

There are multiple checks you can use directly on your commands dpytools.checks.admin_or_roles takes any number of strings (Role names) and ints (role ID) and checks if the person using the command has those roles or has administrator permissions.

from dpytools.checks import admin_or_roles
@bot.command()
@admin_or_roles('Moderator', 123456789)
async def moderation(ctx):
    ctx.send('Only admins and people with a a role named "Moderator" ' 
             'or with a role with id 123456789 can use this command')
from dpytools.checks import any_checks

@commands.guild_only()       # This command must be called inside a server
@any_checks                  # Place the decorator above the checks you with to compare using "OR"
@commands.is_owner()         # The command will run if ctx.author is the owner of the bot
@commands.has_role('Admin')  # __OR__ if ctx.author has the role "Admin"
@bot.command()               # this decorator transforms this function in a command any_checks must be above it
async def test(ct):
    await ctx.send('The command works')

There are also multiple argument parsers. Functions that convert a user's input to something more useful. dpytools.parsers.to_timedelta takes a string in the format <number>[s|m|h|d|w] and returns a timedelta object

from dpytools.parsers import to_timedelta
@bot.command()
@commands.guild_only()
async def mute(ctx, member: discord.Member, time: to_timedelta):
    await ctx.send(f"{member.mention} muted for {time.total_seconds()} seconds")
    mute_role = ctx.guild.get_role(1234567890)
    await member.add_roles(mute_role)
    await asyncio.sleep(time.total_seconds())
    await member.remove_roles(mute_role)
    await ctx.send(f"{member.mention} unmuted")

This argument parsers can also be used outside the context of discord.ext.commands In the end most of them only take a string and return the appropriate object. Only converter classes that inherit from discord.ext.commands.Converter require a command context to work.

There are many other tools available in the library, check them in docs/All.md

Todos:

  1. Add interactions

Status of the project

Beta. All functions have been tested but new tools are frequently added. Breaking changes may come depending on changes on API or discord. Use in production only after extensive testing.

Contributing

Feel free to make a pull request or rise any issues.

Contact

Message me on discord at ChrisDewa#4552 if you have any questions, ideas or suggestions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dpytools-0.17.2b0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

dpytools-0.17.2b0-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file dpytools-0.17.2b0.tar.gz.

File metadata

  • Download URL: dpytools-0.17.2b0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.10 Windows/10

File hashes

Hashes for dpytools-0.17.2b0.tar.gz
Algorithm Hash digest
SHA256 b2ba816fa3ff32014c5ea5c8553eb6eee10142cfc6b5b90b61f7d116e71849d2
MD5 c1f847bd3ddec3c1a8f5d731bfcd58e4
BLAKE2b-256 43052f4f58b6ac696db269d4017124c363e6af06431d21a9a57cd05ac2e6498d

See more details on using hashes here.

File details

Details for the file dpytools-0.17.2b0-py3-none-any.whl.

File metadata

  • Download URL: dpytools-0.17.2b0-py3-none-any.whl
  • Upload date:
  • Size: 24.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.10 Windows/10

File hashes

Hashes for dpytools-0.17.2b0-py3-none-any.whl
Algorithm Hash digest
SHA256 af25445857211b0d1d800a039d656d2c82c98ef8c48e4bc89e1583f33a71347f
MD5 b6369deb6dc53223f9cf31c0e160c3bb
BLAKE2b-256 76f07145cf0b494e2311b07079f8b5459357e9409bf0221e4a484aa9db038c82

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page