Skip to main content

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

@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 = {'argless': ['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 the key:value split (Defaults to :=)
  • suppress_reserved_keyword: boolean -> Whether to suppress errors on reserved keywords (Defaults to False)
    • Currently argless is reserved
    • By default, if the user provides a flag called argless it raises ReservedKeyword
    • If you set this to True it will overwrite argless, this does mean you lose any arguments without a flag

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 'argless' 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 argless. 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 argless 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

discord-typed-flags-1.1.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

discord_typed_flags-1.1.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file discord-typed-flags-1.1.0.tar.gz.

File metadata

  • Download URL: discord-typed-flags-1.1.0.tar.gz
  • Upload date:
  • Size: 3.9 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

Hashes for discord-typed-flags-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7a3dccc1f82fc1f57e74f5f2348b67b4967563f0c3ec120f5a875183ee84310d
MD5 d8e685f460827b4abfc0a116f34b97ab
BLAKE2b-256 2ccaf07ccbb50c90e17211ee74f1abfd98d5848df6bc001aa604b134a5650bb0

See more details on using hashes here.

Provenance

File details

Details for the file discord_typed_flags-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: discord_typed_flags-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.4 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

Hashes for discord_typed_flags-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1554b7d4158ad3993ba9db5ebf65f157f7961c90920d59d91d3311eafc679b4
MD5 c11a33e0d0a842c8aef0fdf0118ec9b6
BLAKE2b-256 d84f2806b68728d1662ea04f7f033e4d7fa0a4b7abc14db34f182b26e0d14dd0

See more details on using hashes here.

Provenance

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