Skip to main content

RegEx based argument parsing for commands in discord.py

Project description

discord_reargparse

Provides support for RegEx based argument parsing in commands for the discord.py library.

param_converter = RegExArgConverter(
    r"^(\S+[\ \S]*?)(?:\ -c(\d+))?(\ -n)?$",
    # OR re.compile(r"^(\S+[\ \S]*?)(?:\ -c(\d+))?(\ -n)?$"),
    
    string = Parameter(
        default="hello!",
    ),
    count = Parameter(
        int,
        default=2,
    ),
    new_line = Parameter(
        lambda x: bool(x),
    )
)

# ...

@bot.command()
async def repeat(ctx, *, params:param_converter=param_converter.defaults):
    string = params["string"]
    count = params["count"]
    sep = "\n" if params.get("new_line", False) else " "
    
    await ctx.send(sep.join([string]*count))

@repeat.error
async def repeat_error(ctx, error):
    if isinstance(error, NotMatchedWithPattern):
        await ctx.send(
            "{0} not matched with pattern r'{1}'".format(
                repr(error.argstr), error.pattern.pattern,
            )
        )

On your discord server, the commands can be invoked like this:

!repeat

> hello! hello!

!repeat Hi -c3 -n

> Hi
> Hi
> Hi

!repeat hello
world

    → will raise a NotMatchedWithPattern exception

Installation

Installation is available via pip:

pip install discord_reargparse

Documentation

Initialize an RegExArgConverter as in the example above, annotate a keyword-only function argument in your command with the instance and, optionally, set its default value by using the .defaults attribute. Setting a default value can be omitted for non-optional regex groups.

It will raise a NotMatchedWithPattern exception if not matched with given regex pattern.

Inside the command, you can access the arguments as a dict.

command's usage

The usage string of repeat command is displayed like.

!help repeat

> repeat [params=Args(r'^(\S+[\ \S]*?)(?:\ -c(\d+))?(\ -n)?$' => [string=hello!] [count=2] <new_line>)]

You might also want to set the usage parameter of the command() function decorator to display a alternative usage string, especially when using the RegExArgConverter.defaults attribute.

Project details


Download files

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

Source Distribution

discord-reargparse-0.0.1.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

discord_reargparse-0.0.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file discord-reargparse-0.0.1.tar.gz.

File metadata

  • Download URL: discord-reargparse-0.0.1.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.4.44-1-MANJARO

File hashes

Hashes for discord-reargparse-0.0.1.tar.gz
Algorithm Hash digest
SHA256 4e4b91179925dd8562093c83582b4fae98007b2865da5cc37f5c9b6edeb7ca75
MD5 13bd5c8859e1c2e9a970414d104de13c
BLAKE2b-256 5e1839476cff1d009573464ac66343040b2d0ba3129cd0993ce7f27b9eab18e4

See more details on using hashes here.

File details

Details for the file discord_reargparse-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: discord_reargparse-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.4.44-1-MANJARO

File hashes

Hashes for discord_reargparse-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f105adc4e685ac18524fa0a24f4037b104777bb6a34c1c9b24648dc82d3e6713
MD5 b64c743a053ca161ca17d63ce3799f71
BLAKE2b-256 af74b6f508e171701a9bdd47932e59cb2ed233dc0a608d29a621e99ac720e0d5

See more details on using hashes here.

Supported by

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