Skip to content

A util for discord.py bots that allow passing flags into commands.

License

Notifications You must be signed in to change notification settings

poketwo/Flag-Parsing

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

THIS IS DEPRECATED AND WILL BE REMOVED WHEN RAPPTZ WORKS ON AN OFFICIAL IMPLEMENTATION

version python-s license-s

⚠ Please be sure to read the entire README, it explains some important tricks.

Flag Parsing

A util for discord.py bots that allow passing flags into commands.

To install, run the following command:

pip install discord-flags

You can install the legacy parser by running:

pip install discord-flags==1.5.2

2.1.0 changes how signatures appear. If you wish to use the legacy signatures, use command.old_signature instead.

Basic example usage:

import discord
from discord.ext import flags, commands

bot = commands.Bot("!")

# Invocation: !flags --count=5 --string "hello world" --user Xua --thing y

@flags.add_flag("--count", type=int, default=10)
@flags.add_flag("--string", default="hello!")
@flags.add_flag("--user", type=discord.User)
@flags.add_flag("--thing", type=bool)
@flags.command()
async def flags(ctx, **flags):
    await ctx.send("--count={count!r}, --string={string!r}, --user={user!r}, --thing={thing!r}".format(**flags))
bot.add_command(flags)

Important note that @flags.command MUST be under all @flags.add_flag decorators.

@flags.add_flag takes the same arguments as argparse.ArgumentParser.add_argument to keep things simple.

Subcommands are just as simple:

@commands.group()
async def my_group(ctx):
    ...

@flags.add_flag("-n")
@my_group.command(cls=flags.FlagCommand)
async def my_subcommand(ctx, **flags):
    ...

Usage of discord.py's consume rest behaviour is not perfect with discord-flags, meaning that you have to use a flag workaround:

@flags.add_flag("message", nargs="+")
@flags.command()
async def my_command(ctx, arg1, **options):
    """ You can now access `message` via `options['message']` """
    message = ' '.join(options['message'])

About

A util for discord.py bots that allow passing flags into commands.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%