bases.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:Chiaki-Nanami 作者: Ikusaba-san 项目源码 文件源码
def __init_subclass__(cls, *, game_cls, cmd=None, aliases=(), **kwargs):
        super().__init_subclass__(**kwargs)

        cls.__game_class__ = game_cls
        cmd_name = cmd or cls.__name__.lower()

        group_help = inspect.getdoc(cls._game).format(name=cls.name)
        group_command = commands.group(
            name=cmd_name, aliases=aliases, help=group_help, invoke_without_command=True
        )(cls._game)
        setattr(cls, f'{cmd_name}', group_command)

        gc = group_command.command
        for name, member in inspect.getmembers(cls):
            if not name.startswith('_game_'):
                continue


            name = name[6:]
            if name in {'invite', 'create'}:
                # Special treatment is needed for these two
                continue

            help = inspect.getdoc(member).format(name=cls.name, cmd=cmd_name)
            command = gc(name=name, help=help)(member)
            setattr(cls, f'{cmd_name}_{name}', command)

        setattr(cls, f'_{cls.__name__}__error', cls._error)

        # Deprecate create and invite
        dc = functools.partial(gc, cls=DeprecatedCommand, version='1.2')
        setattr(cls, f'{cmd_name}_create', dc(name='create', instead=f'{cmd_name}')(cls._game_create))
        setattr(cls, f'{cmd_name}_invite', dc(name='invite', instead=f'{cmd_name} @user')(cls._game_invite))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号