Ejemplo n.º 1
0
 async def blacklist(self, ctx, *, args: str) -> None:
     """
     blacklist the users provided to the command, both mentions and ids are valid.
     :param ctx: context of the invocation
     :param args: members provided to blacklist
     :return: None
     """
     member_set = await convert_content_to_member_set(ctx, args.split())
     for member in member_set:
         if member_has_role(
                 member,
                 roles()["admin"]) and ctx.message.author.id != int(
                     config["owner"]):
             await ctx.channel.send("You cannot blacklist an admin.")
         else:
             if member_has_role(
                     member,
                     roles()["moderator"]) and not member_has_role(
                         ctx.message.author,
                         roles()["admin"]):
                 await ctx.channel.send(
                     "Only admins can blacklist an moderator.")
             else:
                 self.blocker_service.blacklist(
                     Member(ctx.guild.id, member.id))
                 await ctx.channel.send("Blacklisted {}".format(
                     member.mention))
Ejemplo n.º 2
0
 async def reset(self, ctx, *, args: str) -> None:
     """
     reset karma of the users provided to the command, both mentions and ids are valid.
     :param ctx: context of the invocation
     :param args: members provided to reset karma
     :return: None
     """
     # convert args to discord.Member
     member_set = await convert_content_to_member_set(ctx, args.split())
     for member in member_set:
         if member_has_role(
                 member,
                 roles()["admin"]) and ctx.message.author.id != int(
                     config["owner"]):
             await ctx.channel.send(
                 "You cannot reset the karma of an admin.")
         else:
             if member_has_role(
                     member,
                     roles()["moderator"]) and not member_has_role(
                         ctx.message.author,
                         roles()["admin"]):
                 await ctx.channel.send(
                     "Only admins can reset the karma of an moderator.")
             else:
                 self.karma_service.delete_all_karma(
                     KarmaMember(ctx.guild.id, member.id))
                 await ctx.channel.send("Removed all Karma from {}".format(
                     member.mention))
Ejemplo n.º 3
0
 def predicate(ctx):
     role = str(permission_map[command_name])
     caller = ctx.message.author
     log.info(f'Checking on permission {role} for command: {command_name} and user: {ctx.message.author.id}')
     if role.lower() == 'everyone':
         return True
     elif role.lower() == 'owner':
         if caller.id == int(config['owner']):
             return True
     elif role.lower() == 'moderator':
         if member_has_role(caller, roles()['moderator']) \
                 or member_has_role(caller, roles()['admin']) \
                 or caller.id == int(config['owner']):
             return True
     elif role.lower() == 'admin':
         if member_has_role(caller, roles()['admin']) \
                 or caller.id == int(config['owner']):
             return True
     return False
Ejemplo n.º 4
0
    async def whitelist(self, ctx, *, args: str) -> None:
        """
        whitelist the users provided to the command, both mentions and ids are valid.
        :param ctx: context of the invocation
        :param args: members provided to whitelist
        :return: None
        """
        member_set = await convert_content_to_member_set(ctx, args.split())
        for member in member_set:
            if member_has_role(member, roles()['admin']) and ctx.message.author.id != int(config['owner']):
                await ctx.channel.send(f'Skipping {member.display_name}, You cannot whitelist an admin.')
                continue

            if member_has_role(member, roles()['moderator']) \
                    and not member_has_role(ctx.message.author, roles()['admin']):
                await ctx.channel.send(f'Skipping {member.display_name}, Only admins can whitelist an moderator.')

            self.blocker_service.whitelist(Member(ctx.guild.id, member.id))
            await ctx.channel.send(f'Whitelisted {member.mention}')
Ejemplo n.º 5
0
    async def reset(self, ctx, *, args: str) -> None:
        """
        reset karma of the users provided to the command, both mentions and ids are valid.
        :param ctx: context of the invocation
        :param args: members provided to reset karma
        :return: None
        """
        # convert args to discord.Member
        member_set = await convert_content_to_member_set(ctx, args.split())
        for member in member_set:
            if member_has_role(member, roles()['admin']) and ctx.message.author.id != int(config['owner']):
                await ctx.channel.send(f'Skipping {member.display_name}, You cannot reset the karma of an admin.')
                continue

            if member_has_role(member, roles()['moderator']) \
                    and not member_has_role(ctx.message.author, roles()['admin']):
                await ctx.channel.send(f'Skipping {member.display_name}, ' +
                                       'Only admins can reset the karma of an moderator.')
                continue

            self.karma_service.delete_all_karma(KarmaMember(ctx.guild.id, member.id))
            await ctx.channel.send(f'Removed all Karma for {member.mention}')
Ejemplo n.º 6
0
 def predicate(ctx):
     role = str(permission_map[command_name])
     caller = ctx.message.author
     log.info(
         f"Checking on permission {role} for command: {command_name} and user: {ctx.message.author.id}"
     )
     if role.lower() == "everyone":
         return True
     elif role.lower() == "owner":
         if caller.id == int(config["owner"]):
             return True
     elif role.lower() == "moderator":
         if (member_has_role(caller,
                             roles()["moderator"])
                 or member_has_role(caller,
                                    roles()["admin"])
                 or caller.id == int(config["owner"])):
             return True
     elif role.lower() == "admin":
         if member_has_role(caller,
                            roles()["admin"]) or caller.id == int(
                                config["owner"]):
             return True
     return False