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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e4b91179925dd8562093c83582b4fae98007b2865da5cc37f5c9b6edeb7ca75
|
|
| MD5 |
13bd5c8859e1c2e9a970414d104de13c
|
|
| BLAKE2b-256 |
5e1839476cff1d009573464ac66343040b2d0ba3129cd0993ce7f27b9eab18e4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f105adc4e685ac18524fa0a24f4037b104777bb6a34c1c9b24648dc82d3e6713
|
|
| MD5 |
b64c743a053ca161ca17d63ce3799f71
|
|
| BLAKE2b-256 |
af74b6f508e171701a9bdd47932e59cb2ed233dc0a608d29a621e99ac720e0d5
|