Groups¶
Command groups allow you to organize multiple commands into a single tree-like structure. You can have up to two levels of grouping.
An example group structure could be the following:
group
├── subgroup
│ ├── foo
│ └── bar
└── baz
This would create the following commands for the user:
/group subgroup foo
/group subgroup bar
/group baz
Creating a Group¶
Creating a group is as easy as creating an instance of the Group
class. Like slash commands, groups must have
a name and description. Other parameters can be seen in the documentation.
group = lightbulb.Group("group", "a command group")
Given that subgroups must be linked to a command group, the method Group.subgroup()
must be used to create one.
Subgroups must also have a name and description.
subgroup = group.subgroup("subgroup", "a command subgroup")
Adding Commands¶
Registering a command to a group or subgroup is very similar to registering it to the Lightbulb client - using
the Group.register
(or SubGroup.register
) decorator.
group = lightbulb.Group(...)
@group.register
class YourCommand(
lightbulb.SlashCommand,
...
):
...
Important
Only SlashCommand
s can be added to groups - context menu commands cannot and will error.
Registering Groups¶
After you have created your group and added your commands, you will need to register the group with the Client
so
that they can be used by your users. Like normal commands, this is done using the Client.register
method.
group = lightbulb.Group(...)
@group.register
class YourCommand(
lightbulb.SlashCommand,
...
):
...
# Register the group globally
client.register(group)
# If you want to limit the command to specific guilds
client.register(group, guilds=[...])
After doing this - and starting the client - the command group’s subcommands should appear within Discord and be usable.