command.py 文件源码

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

项目:PyPlanet 作者: PyPlanet 项目源码 文件源码
def handle(self, instance, player, argv):
        """
        Handle command parsing and execution.

        :param player: Player object.
        :param argv: Arguments in array
        :type player: pyplanet.apps.core.maniaplanet.models.player.Player
        """
        # Check permissions.
        if self.perms and len(self.perms) > 0:
            # All the given perms need to be matching!
            is_allowed = await asyncio.gather(*[
                instance.permission_manager.has_permission(player, perm) for perm in self.perms
            ])
            if not all(allowed is True for allowed in is_allowed):
                await instance.chat(
                    '$z$sYou are not authorized to use this command!',
                    player.login
                )
                return

        # Strip off the namespace and command.
        paramv = self.get_params(argv)

        # Parse, validate and show errors if any.
        self.parser.parse(paramv)
        if not self.parser.is_valid():
            await instance.gbx.multicall(
                instance.chat('$z$sCommand operation got invalid arguments: {}'.format(', '.join(self.parser.errors)), player),
                instance.chat('$z$s >> {}'.format(self.usage_text), player),
            )
            return

        # We are through. Call our target!
        if iscoroutinefunction(self.target):
            return await self.target(player=player, data=self.parser.data, raw=argv, command=self)
        return self.target(player=player, data=self.parser.data, raw=argv, command=self)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号