示例#1
0
    async def create_role(self, ctx: Context, role: str = None):
        if not ctx.guild:
            raise OutOfServer()
        if not ctx.author.guild_permissions.manage_roles:
            raise PermissionDenied()
        if not role:
            raise InvalidArgs("I need a role name!")

        await ctx.guild.create_role(name=role)
        await ctx.send(f"Created role {role}")
示例#2
0
    def _check_view_perms(self, perms_info, request, view_args, view_kwargs):
        """Check if the permissions information in C{perms_info} apply"""
        if request.method in perms_info["methods"]:
            user = perms_info["user_func"](request, *view_args, **view_kwargs)
            targets = perms_info["target_func"](request, *view_args,
                                                **view_kwargs)

            missing, target = ExpedientPermission.objects.get_missing(
                user, perms_info["perm_names"], targets)

            if missing:
                raise PermissionDenied(missing.name, target, user)
示例#3
0
    def _check_view_perms(self, perms_info, request, view_args, view_kwargs):
        """Check if the permissions information in C{perms_info} apply"""
        if request.method in perms_info["methods"]:
            permittee = perms_info["permittee_func"](request, *view_args,
                                                     **view_kwargs)
            targets = perms_info["target_func"](request, *view_args,
                                                **view_kwargs)

            missing, target = ExpedientPermission.objects.get_missing(
                permittee, perms_info["perm_names"], targets)

            if missing:
                exc = PermissionDenied(missing.name, target, permittee)
                logger.info("Permission Denied %s" % exc)
                raise exc
示例#4
0
    async def ban(self, ctx: Context, member_name: str = None):
        if not ctx.guild:
            raise OutOfServer()

        if not ctx.author.guild_permissions.ban_members:
            raise PermissionDenied()

        if not member_name:
            raise InvalidArgs("I need a name!")

        member = find_member(member_name,
                             ctx.guild.members,
                             raise_exception=True)

        await member.ban()
        await ctx.send(f"{member.mention} has been banned.")
示例#5
0
文件: basic_cog.py 项目: dferndz/r2d2
    async def invite(self, ctx: Context):
        if not ctx.guild:
            raise OutOfServer()
        guild: Guild = ctx.guild
        author: Member = ctx.author
        if not author.guild_permissions.create_instant_invite:
            raise PermissionDenied()

        server_invites: List[Invite] = await guild.invites()

        for invite in server_invites:
            if invite.inviter == self.bot.user and invite.max_age == 0:
                await ctx.send(invite.url)
                return

        channel: TextChannel = ctx.channel
        invite: Invite = await channel.create_invite()
        await ctx.send(invite.url)
示例#6
0
        def require_obj_permissions_wrapper(obj, *args, **kw):
            """
            Wrapper for the called method that checks the permissions before
            calling the method.
            """
            # check for the permission
            try:
                if self.pop_user_kw:
                    user = kw.pop(self.user_kw)
                else:
                    user = kw[self.user_kw]
            except KeyError:
                raise PermissionSignatureError(self.user_kw)

            missing, temp = ExpedientPermission.objects.get_missing_for_target(
                user, self.perm_names, obj)

            if missing:
                raise PermissionDenied(missing.name, obj, user)

            # All is good. Call the function
            return f(obj, *args, **kw)
示例#7
0
文件: basic_cog.py 项目: dferndz/r2d2
 async def all(self, ctx: Context):
     if not ctx.guild:
         raise OutOfServer()
     if not ctx.author.guild_permissions.mention_everyone:
         raise PermissionDenied()
     await ctx.send(ctx.guild.default_role)
示例#8
0
 def internal(self, graph, actor_id, node_id, tx):
     raise PermissionDenied()
示例#9
0
 def creator(self, graph, actor_id, node_id, tx):
     creator_id = graph.request_subgraph_at_node(-1, {'created_by': None}, node_id, tx=tx)['created_by']
     if not actor_id == creator_id:
         raise PermissionDenied("{}: User {} is not the creator.".format(self.name, actor_id))
 def wrapper(*args, **kwargs):
     if args[0] not in user_list:
         raise PermissionDenied('Permission denied.')
     return func(*args, **kwargs)