Beispiel #1
0
    async def resolved(self, ctx):
        """Marks your last mod mail message as resolved"""

        # We should probably delete the message for privacy.
        await ctx.message.delete()

        logs = get_userlog()
        uid = str(ctx.author.id)

        if uid not in logs or "mail" not in logs[uid] or len(
                logs[uid]["mail"]) == 0:
            await ctx.send("No mod mail message to mark as resolved.")
            return

        if logs[uid]["mail"][-1]["resolved"]:
            await ctx.send(
                "Last mod mail message is already marked as resolved.")
            return

        logs[uid]["mail"][-1]["resolved"] = True
        set_userlog(json.dumps(logs))

        modmail_channel = self.bot.get_channel(config.modmail_channel)
        message = await modmail_channel.fetch_message(
            logs[uid]["mail"][-1]["message_id"])
        await message.edit(
            embed=self.build_embed(ctx.author, logs[uid]["mail"][-1]))

        await ctx.send(f"{ctx.author.mention} - Message marked as resolved.")
Beispiel #2
0
    def add_mail_log(self, uid, message):
        userlogs = get_userlog()
        uid = str(uid)

        if uid not in userlogs:
            userlogs[uid] = get_blank_userlog()

        userlogs[uid]["mail"].append(message)
        set_userlog(json.dumps(userlogs))
Beispiel #3
0
 def clear_event_from_id(self, uid: str, event_type):
     userlog = get_userlog()
     if uid not in userlog:
         return f"<@{uid}> has no {event_type}!"
     event_count = len(userlog[uid][event_type])
     if not event_count:
         return f"<@{uid}> has no {event_type}!"
     userlog[uid][event_type] = []
     set_userlog(json.dumps(userlog))
     return f"<@{uid}> no longer has any {event_type}!"
Beispiel #4
0
    async def restoreuserlog(self, ctx, message_id: int):
        """Restores the user log from a saved backup."""
        message = await self.bot.botlog_channel.fetch_message(message_id)
        if message.author.id != self.bot.user.id or len(
                message.attachments) == 0:
            await ctx.send("Incorrect Message ID.")

        for attachment in message.attachments:
            if attachment.filename == "userlog.json":
                logs = (await attachment.read()).decode("utf-8")
                set_userlog(logs)
                return

        await ctx.send("Incorrect Message ID.")
Beispiel #5
0
 def delete_event_from_id(self, uid: str, idx: int, event_type):
     userlog = get_userlog()
     if uid not in userlog:
         return f"<@{uid}> has no {event_type}!"
     event_count = len(userlog[uid][event_type])
     if not event_count:
         return f"<@{uid}> has no {event_type}!"
     if idx > event_count:
         return "Index is higher than "\
                f"count ({event_count})!"
     if idx < 1:
         return "Index is below 1!"
     event = userlog[uid][event_type][idx - 1]
     event_name = userlog_event_types[event_type]
     embed = discord.Embed(color=discord.Color.dark_red(),
                           title=f"{event_name} {idx} on "
                           f"{event['timestamp']}",
                           description=f"Issuer: {event['issuer_name']}\n"
                           f"Reason: {event['reason']}")
     del userlog[uid][event_type][idx - 1]
     set_userlog(json.dumps(userlog))
     return embed