Пример #1
0
    async def remove(self, ctx, id: str):
        """ Remove a user from the Bot administrator list *Logged Action* """
        setup, reqs = permissions.is_setup(ctx)
        if not setup:
            await self.loggy.say(reqs)
            return False
        try:
            to_remove = ctx.message.server.get_member(id)
        except:
            await self.loggy.say("Invalid User ID given.")
            return
        await self.loggy.send_message(
            ctx.message.author,
            "Are you sure you want to remove {0.mention}'s administrator rights? \n Please type"
            " 'I want to remove {1}'s administrator rights'".format(
                to_remove, to_remove))

        def check(check_message):
            return check_message.content == (
                "I want to remove {0}'s administrator rights".format(to_remove)
            )

        check_message = await self.loggy.wait_for_message(
            author=ctx.message.author, check=check)
        settings.remove_setting(ctx.message.server.id, "admins",
                                to_remove.display_name)
        result = u"{0.name} Has been stripped of administrator privileges by {1.name}".format(
            to_remove, ctx.message.author)
        settings.log(ctx.message.server.id, "audit", result)
        await self.loggy.send_message(
            self.loggy.get_channel(
                settings.get_settings(
                    ctx.message.server.id)["log-channels"]["general"]), result)
Пример #2
0
    async def add(self, ctx, id: str):
        """ Add a user to the Bot administrator list *Logged Action* """
        setup, reqs = permissions.is_setup(ctx)
        if not setup:
            await self.loggy.say(reqs)
            return False
        try:
            new_admin = ctx.message.server.get_member(id)
        except:
            await self.loggy.say("Something raised an exception...")
            return
        await self.loggy.send_message(
            ctx.message.author,
            "Are you sure you want to give {0.mention} administrator rights? \n Please type"
            " 'I want to give {1} administrator rights'".format(
                new_admin, new_admin))

        def check(check_message):
            return check_message.content == (
                "I want to give {0} administrator rights".format(new_admin))

        check_message = await self.loggy.wait_for_message(
            author=ctx.message.author, check=check)
        settings.save_setting(ctx.message.server.id, "admins",
                              new_admin.display_name, id)
        result = u"{0.name} Has been given administrator privileges by {1.name}".format(
            new_admin, ctx.message.author)
        settings.log(ctx.message.server.id, "audit", result)
        await self.loggy.send_message(
            self.loggy.get_channel(
                settings.get_settings(
                    ctx.message.server.id)["log-channels"]["general"]), result)
Пример #3
0
 async def toggle(self, ctx, log, status):
     """ Change whether or not a logging category is enabled. \n\n Options are `status` and `games`. \n General cannot be disabled (Hu Doi) \n usage: `?logch toggle  status|games  on|off """
     if log == "status" or log == "games":
         if status == "on" or status == "off":
             if status == "on":
                 if settings.get_settings(
                         ctx.message.server.id)["log-channels"][log] == "":
                     await self.loggy.say(
                         "Cannot Turn {0} Logs {1}; Log Channel has not been set!"
                         .format(log, status))
                     return False
             settings.save_setting(ctx.message.server.id, "enabled_logs",
                                   log, status)
             await self.loggy.say(
                 "Logs for {0} have been turned {1}".format(log, status))
             settings.log(
                 ctx.message.server.id, "audit",
                 "{0} turned {1} {2} logs".format(ctx.message.author.name,
                                                  status, log))
         else:
             await self.loggy.say(
                 "That's not a valid mode! \n\n Options: \n `on` \n `off` ")
             return
     else:
         await self.loggy.say(
             "That's not a valid log category! \n\n Options: \n `status` \n `games` "
         )
         return
Пример #4
0
    async def purge_log(self, ctx, amount: int):
        """ Removes specified number of log messages from the logs channel """
        await self.loggy.send_message(
            ctx.message.channel, "Are you sure you want to purge the logs? "
            "\n Type 'Confirm' to proceed.")

        def check(message):
            return message.content.startswith("Confirm")

        message = await self.loggy.wait_for_message(author=ctx.message.author,
                                                    check=check)

        def is_log_bot(message):
            return message.author == self.loggy.user

        deleted = await self.loggy.purge_from(self.loggy.get_channel(
            settings.get_settings(
                ctx.message.server.id)["log-channels"]["general"]),
                                              limit=amount,
                                              check=is_log_bot)
        await self.loggy.send_message(
            message.channel, "Deleted {} message(s)".format(len(deleted)))
        settings.log(
            ctx.message.server.id, "audit",
            u"{0.name} Deleted {1} log message(s) \n".format(
                ctx.message.author, len(deleted)))
Пример #5
0
 async def on_member_ban(self, member):
     log_message = u"{} Was banned from {}!".format(member.name,
                                                    member.server)
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 member.server.id)["log-channels"]["general"]), log_message)
     settings.log(member.server.id, "audit", log_message)
Пример #6
0
 async def on_channel_delete(self, channel):
     log_message = "Channel '{}' was deleted".format(channel.name)
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 channel.server.id)["log-channels"]["general"]),
         log_message)
     settings.log(channel.server.id, "audit", log_message)
Пример #7
0
 async def on_member_remove(self, member):
     # When a user is removed from the server.
     log_message = u"{} Left the server!".format(member.name)
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 member.server.id)["log-channels"]["general"]), log_message)
     settings.log(member.server.id, "general", log_message)
Пример #8
0
 async def on_channel_create(self, channel):
     log_message = "Channel '{}' was created with topic '{}'".format(
         channel.name, channel.topic)
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 channel.server.id)["log-channels"]["general"]),
         log_message)
     settings.log(channel.server.id, "audit", log_message)
Пример #9
0
 async def on_message_delete(self, message):
     if message.author.bot:
         return
     log_message = "The Following Message belonging to {} was deleted: \n `{}`".format(
         message.author.name, message.content)
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 message.server.id)["log-channels"]["general"]),
         log_message)
     settings.log(message.server.id, "audit", log_message)
Пример #10
0
 async def on_member_update(self, before, after):
     if before.bot:
         return
     # Nickname Changes
     if before.nick != after.nick:
         if after.nick is None:
             message = "{0} Reset their nickname"
             await self.loggy.send_message(
                 self.loggy.get_channel(
                     settings.get_settings(
                         before.server.id)["log-channels"]["general"]),
                 message.format(before.name))
             settings.log(before.server.id, "general",
                          u"{0} reset their nickname".format(before.name))
         else:
             message = "{0} Changed their nickname to {1}"
             await self.loggy.send_message(
                 self.loggy.get_channel(
                     settings.get_settings(
                         before.server.id)["log-channels"]["general"]),
                 message.format(before.name, after.nick))
             settings.log(
                 before.server.id, "general",
                 u"{0} changed their nickname to {1}".format(
                     before.name, after.nick))
     # Status Changes
     """ This is pretty spammy so it can be enabled and disabled in the settings or with the logs_toggle command """
     if settings.get_settings(
             before.server.id)["enabled_logs"]["status"] == "on":
         if before.status != after.status:
             message = "{0}'s status changed to {1}"
             await self.loggy.send_message(
                 self.loggy.get_channel(
                     settings.get_settings(
                         before.server.id)["log-channels"]["status"]),
                 message.format(before.name, after.status))
     if settings.get_settings(
             before.server.id)["enabled_logs"]["games"] == "on":
         if before.game != after.game:
             if after.game is None:
                 message = "{0} Has stopped playing {1}"
                 await self.loggy.send_message(
                     self.loggy.get_channel(
                         settings.get_settings(
                             before.server.id)["log-channels"]["games"]),
                     message.format(before.name, before.game))
             else:
                 message = "{0} Is now playing {1}"
                 await self.loggy.send_message(
                     self.loggy.get_channel(
                         settings.get_settings(
                             before.server.id)["log-channels"]["games"]),
                     message.format(before.name, after.game))
Пример #11
0
 async def on_member_join(self, member):
     # When a user is registered with a server
     log_message = u"{} Joined the server!".format(member.name)
     welcome_str = settings.get_settings(member.server.id).get(
         "welcome-messge", u"Welcome to {} {}!")
     await self.loggy.send_message(
         member, welcome_str.format(member.server.name, member.name))
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 member.server.id)["log-channels"]["general"]), log_message)
     settings.log(member.server.id, "general", log_message)
Пример #12
0
async def on_command_error(error, ctx):
    if isinstance(error, commands.NoPrivateMessage):
        await loggy.send_message(ctx.message.author, "Sorry. This command is unavailable in PM's")
    elif isinstance(error, commands.DisabledCommand):
        await loggy.send_message(ctx.message.author, "Sorry. This command is disabled and cannot be used.")
    elif isinstance(error, commands.CheckFailure):
        if error.args[0] == "Cannot Process Actions; General Logs Channel not set!":
            await loggy.send_message(ctx.message.author, error)
        else:
            await loggy.send_message(ctx.message.author, "You do not have permission to use this command. This incident has been logged.")
            settings.log(ctx.message.server.id, "audit", "{} tried to execute command {} but failed the permissions check!".format(ctx.message.author,ctx.command.qualified_name))
    elif isinstance(error, commands.CommandInvokeError):
        print("In {0.command.qualified_name}:".format(ctx), file=sys.stderr)
        traceback.print_tb(error.original.__traceback__)
        print("{0.__class__.__name__}: {0}".format(error.original), file=sys.stderr)
Пример #13
0
 async def on_channel_update(self, before, after):
     if before.name != after.name:
         log_message = "Channel '{}' was renamed to '{}'"
         await self.loggy.send_message(
             self.loggy.get_channel(
                 settings.get_settings(
                     before.server.id)["log-channels"]["general"]),
             log_message.format(before.name, after.mention))
         settings.log(before.server.id, "audit",
                      log_message.format(before.name, after.name))
     if before.topic != after.topic:
         log_message = "The topic for channel '{}' was changed to '{}'"
         await self.loggy.send_message(
             self.loggy.get_channel(
                 settings.get_settings(
                     before.server.id)["log-channels"]["general"]),
             log_message.format(before.mention, after.topic))
         settings.log(before.server.id, "audit",
                      log_message.format(before.name, after.topic))
Пример #14
0
    async def on_message_edit(self, before, after):
        if before.pinned == False and after.pinned == True:
            log_message = "The follwing message was pinned: \n `{}`".format(
                after.content)
            await self.loggy.send_message(
                self.loggy.get_channel(
                    settings.get_settings(
                        before.server.id)["log-channels"]["general"]),
                log_message)
            settings.log(before.server.id, "audit", log_message)

        if before.pinned == True and after.pinned == False:
            log_message = "The follwing message was unpinned: \n `{}`".format(
                after.content)
            await self.loggy.send_message(
                self.loggy.get_channel(
                    settings.get_settings(
                        before.server.id)["log-channels"]["general"]),
                log_message)
            settings.log(before.server.id, "audit", log_message)

        if before.content != after.content:
            if before.pinned == True and after.pinned == True:
                log_message = "The following **pinned** message belonging to {} was edited: \n Original: \n `{}` \n Modified: \n `{}` \n".format(
                    before.author.name, before.content, after.content)
                await self.loggy.send_message(
                    self.loggy.get_channel(
                        settings.get_settings(
                            before.server.id)["log-channels"]["general"]),
                    log_message)
                settings.log(before.server.id, "audit", log_message)
Пример #15
0
 async def on_voice_state_update(self, before, after):
     # Triggered on channel change and mute/deafen
     if before.bot:
         return
     if (before.voice_channel == after.voice_channel):
         return
     elif (after.voice_channel is None):
         message = u'{0} Disconnected from {1}'
         channel = before.voice_channel
         settings.log(
             before.server.id, "general",
             u'{0} Disconnected from {1}'.format(before.name, channel.name))
     else:
         message = u'{0} Moved to {1}'
         channel = after.voice_channel
         settings.log(before.server.id, "general",
                      message.format(before.name, channel.name))
     await self.loggy.send_message(
         self.loggy.get_channel(
             settings.get_settings(
                 before.server.id)["log-channels"]["general"]),
         message.format(before.name, channel.name))