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.")
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))
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}!"
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.")
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