from discord.ext import commands from cogs.utils.dataIO import dataIO from __main__ import send_cmd_help, settings from .utils import checks import datetime import discord import os from collections import defaultdict class lsar: '''A pretty way to show self assignable roles.''' def __init__(self, bot): self.bot = bot def _get_selfrole_names(self, server): self._settings = dataIO.load_json('data/admin/settings.json') self._settable_roles = self._settings.get("ROLES", {}) if server.id not in self._settable_roles: return None else: return self._settable_roles[server.id] @commands.command(no_pm=True, pass_context=True) async def lsar(self, ctx): """Views all current roles you can assign to yourself. Configurable using `adminset`""" server = ctx.message.server timestamp = datetime.datetime.today() #The selfrole in admin has a bug. You can remove all roles but the server will remain on the selfrole list. The or check corrects this for us. if self._get_selfrole_names(ctx.message.server) is None or not self._get_selfrole_names(ctx.message.server): embedmsg = discord.Embed(title="<:res1error:330424101661442050> No roles are available for you to add to yourself.", colour=discord.Colour(0xff000), description="This server is currently offers no roles for you to add to yourself.", timestamp = timestamp) else: selfroles = self._settable_roles[server.id] embedmsg = discord.Embed(title="<:res1hellyeah:330424103259340800> Roles are available for you to add:", colour=discord.Colour(0x54d824), description="You can currently give yourself:\n{}".format("\n".join(selfroles)), timestamp = timestamp) await self.bot.say(embed=embedmsg) def setup(bot: commands.Bot): bot.add_cog(lsar(bot))