Exemplo n.º 1
0
 async def add(self, ctx, server, role):
     """Add a role to the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     mods = load_moderation()
     valid_server = False
     valid_role = False
     for e in self.bot.servers:
         if e.name == server:
             valid_server = True
         for f in e.roles:
             if f.name == role:
                 valid_role = True
     if valid_server:
         if valid_role:
             try:
                 mods[server]
             except KeyError:
                 mods[server] = [role]
             else:
                 mods[server].append(role)
             with open("settings/moderation.json", "w+") as f:
                 json.dump(mods, f)
             await self.bot.send_message(
                 ctx.message.channel, self.bot.bot_prefix +
                 "Successfully added {} to the list of mod roles on {}!".
                 format(role, server))
         else:
             await self.bot.send_message(
                 ctx.message.channel, self.bot.bot_prefix +
                 "{} isn't a role on {}!".format(role, server))
     else:
         await self.bot.send_message(
             ctx.message.channel,
             self.bot.bot_prefix + "{} isn't a server!".format(server))
Exemplo n.º 2
0
 async def add(self, ctx, server, role):
     """Add a role to the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     mods = load_moderation()
     valid_server = False
     valid_role = False
     for e in self.bot.guilds:
         if e.name == server:
             valid_server = True
         for f in e.roles:
             if f.name == role:
                 valid_role = True
     if valid_server:
         if valid_role:
             try:
                 mods[server]
             except KeyError:
                 mods[server] = [role]
             else:
                 mods[server].append(role)
             with open("settings/moderation.json", "w+") as f:
                 json.dump(mods, f)
             await ctx.send(
                            self.bot.bot_prefix + "Successfully added {} to the list of mod roles on {}!".format(
                                                                                                                 role, server))
         else:
             await ctx.send(self.bot.bot_prefix + "{} isn't a role on {}!".format(role, server))
     else:
         await ctx.send(self.bot.bot_prefix + "{} isn't a server!".format(server))
Exemplo n.º 3
0
 async def lockdown(self, ctx):
     """Lock message sending in the channel."""
     try:
         try:
             mod_strings = load_moderation()
             mod_role_strings = mod_strings[ctx.message.guild.name]
             mod_roles = []
             for m in mod_role_strings:
                 mod_roles.append(discord.utils.get(ctx.message.guild.roles, name=m))
         except:
             mod_roles = []
         server = ctx.message.guild
         overwrites_everyone = ctx.message.channel.overwrites_for(server.default_role)
         overwrites_owner = ctx.message.channel.overwrites_for(server.role_hierarchy[0])
         if ctx.message.channel.id in self.states:
             await ctx.send("🔒 Channel is already locked down. Use `unlock` to unlock.")
             return
         states = []
         for a in ctx.message.guild.role_hierarchy:
             states.append([a, ctx.message.channel.overwrites_for(a).send_messages])
         self.states[ctx.message.channel.id] = states
         overwrites_owner.send_messages = True
         overwrites_everyone.send_messages = False
         await ctx.message.channel.set_permissions(server.default_role, overwrite=overwrites_everyone)
         for modrole in mod_roles:
             await ctx.message.channel.set_permissions(modrole, overwrite=overwrites_owner)
         await ctx.send(
             "🔒 Channel locked down. Only roles with permissions specified in `moderation.json` can speak.")
     except discord.errors.Forbidden:
         await ctx.send(self.bot.bot_prefix + "Missing permissions.")
Exemplo n.º 4
0
 async def lockdown(self, ctx):
     """Lock message sending in the channel."""
     try:
         try:
             mod_strings = load_moderation()
             mod_role_strings = mod_strings[ctx.message.guild.name]
             mod_roles = []
             for m in mod_role_strings:
                 mod_roles.append(discord.utils.get(ctx.message.guild.roles, name=m))
         except:
             mod_roles = []
         server = ctx.message.guild
         overwrites_everyone = ctx.message.channel.overwrites_for(server.default_role)
         overwrites_owner = ctx.message.channel.overwrites_for(server.role_hierarchy[0])
         if ctx.message.channel.id in self.states:
             await ctx.send("🔒 Channel is already locked down. Use `unlock` to unlock.")
             return
         states = []
         for a in ctx.message.guild.role_hierarchy:
             states.append([a, ctx.message.channel.overwrites_for(a).send_messages])
         self.states[ctx.message.channel.id] = states
         overwrites_owner.send_messages = True
         overwrites_everyone.send_messages = False
         await ctx.message.channel.set_permissions(server.default_role, overwrite=overwrites_everyone)
         for modrole in mod_roles:
             await ctx.message.channel.set_permissions(modrole, overwrite=overwrites_owner)
         await ctx.send(
             "🔒 Channel locked down. Only roles with permissions specified in `moderation.json` can speak.")
     except discord.errors.Forbidden:
         await ctx.send(self.bot.bot_prefix + "Missing permissions.")
Exemplo n.º 5
0
 async def remove(self, ctx, server, role):
     """Remove a role from the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     mods = load_moderation()
     try:
         mods[server].remove(role)
         with open("settings/moderation.json", "w+") as f:
             json.dump(mods, f)
         await ctx.send(
                        self.bot.bot_prefix + "Successfully removed {} from the list of mod roles on {}!".format(
                                                                                                                 role, server))
     except (ValueError, KeyError):
         await ctx.send(
                        self.bot.bot_prefix + "You can't remove something that doesn't exist!")
Exemplo n.º 6
0
 async def remove(self, ctx, server, role):
     """Remove a role from the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     mods = load_moderation()
     try:
         mods[server].remove(role)
         with open("settings/moderation.json", "w+") as f:
             json.dump(mods, f)
         await ctx.send(
                        self.bot.bot_prefix + "Successfully removed {} from the list of mod roles on {}!".format(
                                                                                                                 role, server))
     except (ValueError, KeyError):
         await ctx.send(
                        self.bot.bot_prefix + "You can't remove something that doesn't exist!")
Exemplo n.º 7
0
 async def lockdown(self, ctx):
     """Lock message sending in the channel."""
     try:
         print(self.states)
         try:
             mod_strings = load_moderation()
             mod_role_strings = mod_strings[ctx.message.server.name]
             mod_roles = []
             for m in mod_role_strings:
                 mod_roles.append(
                     discord.utils.get(ctx.message.server.roles, name=m))
         except:
             mod_roles = []
         server = ctx.message.server
         overwrites_everyone = ctx.message.channel.overwrites_for(
             server.default_role)
         overwrites_owner = ctx.message.channel.overwrites_for(
             server.role_hierarchy[0])
         if len(self.states) > 0:
             await self.bot.say(
                 "🔒 Channel is already locked down. Use `unlock` to unlock."
             )
             return
         for a in ctx.message.server.role_hierarchy:
             self.states.append(
                 [a, ctx.message.channel.overwrites_for(a).send_messages])
         print(self.states)
         overwrites_owner.send_messages = True
         overwrites_everyone.send_messages = False
         await self.bot.edit_channel_permissions(ctx.message.channel,
                                                 server.default_role,
                                                 overwrites_everyone)
         for modrole in mod_roles:
             await self.bot.edit_channel_permissions(
                 ctx.message.channel, modrole, overwrites_owner)
         try:
             await self.bot.edit_channel_permissions(
                 ctx.message.channel,
                 server.get_member("135204578986557440"), overwrites_owner)
         except:
             print(
                 "If you have any issues with this feature, let 'thecommondude' know about it in Appu's Discord Server"
             )
         await self.bot.say(
             "🔒 Channel locked down. Only roles with permissions specified in `moderation.json` can speak."
         )
     except discord.errors.Forbidden:
         await self.bot.say("Missing Permissions.")
Exemplo n.º 8
0
 async def mod(self, ctx):
     """Manage list of moderator roles for the [p]lockdown command. [p]help mod for more info.
     [p]mod - List your moderator roles that you have set.
     [p]mod add <server> <role> - Add a role to the list of moderators on a server.
     [p]mod remove <server> <role> - Remove a role from the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     if ctx.invoked_subcommand is None:
         await ctx.message.delete()
         mods = load_moderation()
         embed = discord.Embed(title="Moderator Roles", description="")
         for server in mods:
             embed.description += server + ":\n"
             for mod in mods[server]:
                 embed.description += "    {}\n".format(mod)
         await ctx.send("", embed=embed)
Exemplo n.º 9
0
 async def mod(self, ctx):
     """Manage list of moderator roles for the >lockdown command. >help mod for more info.
     >mod - List your moderator roles that you have set.
     >mod add <server> <role> - Add a role to the list of moderators on a server.
     >mod remove <server> <role> - Remove a role from the list of moderators on a server.
     If a server or role name has spaces in it, you must enclose *both* of them in quotes, no matter which one is the one with spaces in it.
     """
     if ctx.invoked_subcommand is None:
         await self.bot.delete_message(ctx.message)
         mods = load_moderation()
         embed = discord.Embed(title="Moderator Roles", description="")
         for server in mods:
             embed.description += server + ":\n"
             for mod in mods[server]:
                 embed.description += "    {}\n".format(mod)
         await self.bot.send_message(ctx.message.channel, "", embed=embed)