tuxbot-bot/venv/lib/python3.7/site-packages/jishaku/metacog.py

42 lines
1.1 KiB
Python
Raw Normal View History

2019-12-16 18:12:10 +01:00
# -*- coding: utf-8 -*-
"""
jishaku.metacog
~~~~~~~~~~~~~~~
The metaclass definitions for the Jishaku cog.
:copyright: (c) 2019 Devon (Gorialis) R
:license: MIT, see LICENSE for more details.
"""
from discord.ext import commands
class GroupCogMeta(commands.CogMeta):
"""
A CogMeta metaclass that sets all unparented (non-nested) Commands under it as children
of a global Group.
This allows Jishaku to place all of its commands under a group, while maintaining the ability
to override individual subcommands in subclasses.
The Group will be inserted as an attribute of the resulting Cog under its function name.
"""
def __new__(cls, *args, **kwargs):
group = kwargs.pop('command_parent')
new_cls = super().__new__(cls, *args, **kwargs)
for subcommand in new_cls.__cog_commands__:
if subcommand.parent is None:
subcommand.parent = group
subcommand.__original_kwargs__['parent'] = group
new_cls.__cog_commands__.append(group)
setattr(new_cls, group.callback.__name__, group)
return new_cls