Metadata-Version: 2.1
Name: discord-reargparse
Version: 0.0.1
Summary: RegEx based argument parsing for commands in discord.py
Home-page: https://github.com/nkpro2000sr/discord-reargparse
License: MIT
Keywords: discord,regex,argparse,reargparse
Author: nkpro2000sr
Author-email: srnaveen2k@yahoo.com
Maintainer: nkpro2000sr
Maintainer-email: srnaveen2k@yahoo.com
Requires-Python: >=3.6,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Dist: discord.py (>=1.0.0,<2.0.0)
Project-URL: Repository, https://github.com/nkpro2000sr/discord-reargparse
Description-Content-Type: text/markdown

discord_reargparse
==================

Provides support for RegEx based argument parsing in commands for the
[discord.py](https://github.com/Rapptz/discord.py/) library.

```python
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.

