A Typehint based flags system for discord.py
Project description
Typed Flags
A Typehint based system for including flag input in your discord.py commands.
Why bother with numerous decorators and patched commands when you just typehint your input to receive command flags?
Examples
Usage is as simple as typehinting the entire input argument string to TypedFlags, this in turn will convert everything and will return this argument as a dict of key:value pairs where each key is the flag, and the value is the value for that flag
from typed_flags import TypedFlags
@bot.command()
async def test(ctx, *, args: TypedFlags):
# Send all of command args
await ctx.send(args)
An example calling the above code:
%test this "Lol ez" --try:=test string --hard:=This is kinda cool
args = {None: ['this', 'Lol ez'], 'try': 'test string', 'hard': 'This is kinda cool'}
A further example: %test --try:=test string --hard:=lol This is kinda cool
args = {'try': 'test string', 'hard': 'lol This is kinda cool'}
Note: Since we have no argless arguments, it is not in the returned data
Customization
You can customize two things, the string to preceed any flag values as well as the string to split up between the flag and its value.
Both of these are keyword arguments when initializing TypedFlags
start: str -> The string to preceed any flags (Defaults to--)delim: str -> What to split flags with to get thekey:valuesplit (Defaults to:=)
You do not have to provide these values. There are defaults in place. It is only for customization purposes
Important Notes
This package works in-line with how discord.py handles command parsing and consumption. That is to say the argument Hello world will be two variables, where as the argument "Hello world" will be parsed as one argument. This is something important to understand otherwise you will experience unexpected behaviour.
However, this only applies to 'flagless' arguments. Values between flags are considered to be all part of said flag (See examples)
Any arguments not associated with a flag will be added to the dictionary under the key None. The value for this key is a list containing all of the arguments found that do not corrospond to a given flag.
It is also important to note that if no flagless values are detected then this key will not be in the dictionary. You should check for this in your code.
Any arguments in argless are ordered according to the order they were received.
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
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-typed-flags-1.1.4.tar.gz.
File metadata
- Download URL: discord-typed-flags-1.1.4.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a600e1a41b97cfb9a0afad84f9b56033dcaaa47bfe38c2b2c494862f5123a142
|
|
| MD5 |
8409ae2f221eec82b7e9cf41a3d90971
|
|
| BLAKE2b-256 |
50d4d577b5b15b3e01f8fb3b8719fb250ccb36377a76166b2d306c654c9b6045
|
File details
Details for the file discord_typed_flags-1.1.4-py3-none-any.whl.
File metadata
- Download URL: discord_typed_flags-1.1.4-py3-none-any.whl
- Upload date:
- Size: 3.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f082a1671eebb302b9083df3e1a4b52e25e9adee2fca6db2c192c2e5baf07ba1
|
|
| MD5 |
3d782177dc4cca8b731f9cebfe941476
|
|
| BLAKE2b-256 |
2bf22ed1cae9a727c742545c19a22f7adb189896480ac9dc120a5953ac711294
|