diff --git a/forums/forums.py b/forums/forums.py index d312dc8..af98220 100644 --- a/forums/forums.py +++ b/forums/forums.py @@ -12,15 +12,21 @@ class Forums(commands.Cog): self.config = Config.get_conf(self, identifier=2352711325) self.config.register_guild( request_roles=[], - forum_channel="", - forum_tag="" + forum_channel=None, + forum_tag=None ) @commands.command() + @commands.guild_only() async def resolved(self, ctx: commands.Context, *, reason: str = None): """Marks a thread as resolved.""" - if isinstance(ctx.channel, discord.Thread) and ctx.channel.parent_id == await self.config.guild(ctx.guild).forum_channel(): - request_role_ids = await self.config.guild(ctx.guild).request_roles() + channel_id = await self.config.guild(ctx.guild).forum_channel() + tag = await self.config.guild(ctx.guild).forum_tag() + request_role_ids = await self.config.guild(ctx.guild).request_roles() + if channel_id is None or tag is None or request_role_ids is None: + await ctx.reply(f"Configuration not set properly! Please set configuration options with `{ctx.prefix}resolvedset`.") + return + if isinstance(ctx.channel, discord.Thread) and ctx.channel.parent_id == channel_id: request_roles = [ctx.guild.get_role(role_id) for role_id in request_role_ids] match = any(role in ctx.author.roles for role in request_roles) passed_info = { @@ -89,6 +95,43 @@ class Forums(commands.Cog): async def resolvedset(self, ctx: commands.Context): """Manages the configuration for the [p]resolved command.""" + @resolvedset.group(name='show', aliases=['settings']) + async def resolvedset_show(self, ctx: commands.Context): + """Shows the current cog configuration.""" + channel_id = await self.config.guild(ctx.guild).forum_channel() + tag = await self.config.guild(ctx.guild).forum_tag() + request_role_ids = await self.config.guild(ctx.guild).request_roles() + split_content = ctx.message.content.split() + command = ' '.join(split_content[:1]) + already_in_list = [] + for role_id in request_role_ids: + role_obj = ctx.guild.get_role(role_id) + if role_obj: + already_in_list.append(role_obj.mention) + if already_in_list: + roles_list = "Roles already in the allowed roles list:\n" + "\n".join(already_in_list) + f"\nUse `{command} add` to add roles to this list.\nUse `{command} remove` to remove roles from this list." + else: + roles_list = f"No roles are currently in the allowed roles list.\nUse `{command} add` to add some." + tag_str = None + if channel_id is not None: + channel_obj = ctx.guild.get_channel(channel_id) + if channel_obj is None: + channel = f"Channel: {channel_id}\n- ⚠️ This channel cannot be found in this guild. Is this the correct ID?\n\n" + else: + channel = f"Channel: {channel_obj.mention}\n\n" + if tag is not None: + tag_obj = channel_obj.get_tag(tag) + if tag_obj is None: + tag_str = f"Tag: {tag}\n- ⚠️ This tag cannot be found in the set forums channel. Is this the correct ID?\n\n" + else: + tag_str = f"Tag: {tag_obj.emoji} {tag_obj.name}\n\n" + else: + channel = f"Channel: Not set!\n- Use `{command} channel` to set the forums channel.\n\n" + if tag_str is None: + tag_str = f"Tag: Not set!\n- Use `{command} tag` to set the tag.\n\n" + embed = discord.Embed(title="resolvedset Settings", color=await self.bot.get_embed_color(None), description=channel + tag_str + roles_list) + await ctx.reply(embed=embed) + @resolvedset.group(name='role', invoke_without_command=True, aliases=['roles']) async def resolvedset_role(self, ctx: commands.Context): """Manages the allowed roles list.""" @@ -151,8 +194,7 @@ class Forums(commands.Cog): async def resolvedset_tag(self, ctx: commands.Context, channel: discord.ForumChannel): """Sets the tag used by the [p]resolved command.""" options = self.create_select_options(ctx, channel.available_tags) - tag = channel.get_tag(await self.config.guild(ctx.guild).forum_tag()) - msg = await ctx.send(f"Forum tag is currently set to `{str(tag)}`.") + msg = await ctx.send("Select a forum tag below.") await msg.edit(view=SelectView(msg, options)) class Select(ui.Select):