diff --git a/issues/modals.py b/issues/modals.py index 893e7c6..6b59a9e 100644 --- a/issues/modals.py +++ b/issues/modals.py @@ -2,9 +2,11 @@ import aiohttp import discord from redbot.core import Config +# # Misc. functions +# -def construct_embed(interaction: discord.Interaction, fields: list, color: str): +def construct_embed(interaction: discord.Interaction, fields: list[discord.Embed.fields], color: str): embed = discord.Embed(title="Issue Request", color=color) for item in fields: title = item.label @@ -38,7 +40,9 @@ def construct_embed(interaction: discord.Interaction, fields: list, color: str): ) return embed +# # Modals for the core '/issues' command. +# class BotBugModal(discord.ui.Modal, title="Creating issue..."): def __init__(self, color, cog_instance, original_interaction): @@ -51,6 +55,7 @@ class BotBugModal(discord.ui.Modal, title="Creating issue..."): label="Describe the bug", placeholder="A clear and concise description of what the bug is.", style=discord.TextStyle.paragraph, + required=True, max_length=2048 ) reproduction_steps = discord.ui.TextInput( @@ -81,7 +86,135 @@ class BotBugModal(discord.ui.Modal, title="Creating issue..."): embed.set_author(name="Bot Bug Report") await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed) +class CogBugModal(discord.ui.Modal, title="Creating issue..."): + def __init__(self, color, cog_instance, original_interaction): + super().__init__() + self.color = color + self.cog_instance = cog_instance + self.original_interaction = original_interaction + + cog_name = discord.ui.TextInput( + label="What cog is causing this error?", + placeholder="If unsure, put \"GalaxyCogs\".", + style=discord.TextStyle.short, + required=True, + max_length=50 + ) + bug_description = discord.ui.TextInput( + label="Describe the bug", + placeholder="A clear and concise description of what the bug is.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + reproduction_steps = discord.ui.TextInput( + label="To Reproduce", + placeholder="What caused the bug?", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + expected_behavior = discord.ui.TextInput( + label="Expected Behavior", + placeholder="A clear and concise description of what you expected to happen.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + additional_context = discord.ui.TextInput( + label="Additional Context", + placeholder="Add any other context about the problem here.", + style=discord.TextStyle.paragraph, + required=False, + max_length=2048 + ) + + async def on_submit(self, interaction: discord.Interaction): + fields = [self.cog_name, self.bug_description, self.reproduction_steps, self.expected_behavior, self.additional_context] + embed = construct_embed(interaction, fields, self.color) + embed.set_author(name="Cog Bug Report") + await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed) + +class BotSuggestionModal(discord.ui.Modal, title="Creating issue..."): + def __init__(self, color, cog_instance, original_interaction): + super().__init__() + self.color = color + self.cog_instance = cog_instance + self.original_interaction = original_interaction + + suggestion_description = discord.ui.TextInput( + label="Describe your suggestion.", + placeholder="A clear and concise description of what your suggestion is.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + alternatives = discord.ui.TextInput( + label="Describe alternatives you've considered.", + placeholder="A clear and concise description of any alternative solutions or features you've cnosidered.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + additional_context = discord.ui.TextInput( + label="Additional Context", + placeholder="Add any other context about your suggestion here.", + style=discord.TextStyle.paragraph, + required=False, + max_length=2048 + ) + + async def on_submit(self, interaction: discord.Interaction): + fields = [self.suggestion_description, self.alternatives, self.additional_context] + embed = construct_embed(interaction, fields, self.color) + embed.set_author(name="Cog Suggestion") + await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed) + +class CogSuggestionModal(discord.ui.Modal, title="Creating issue..."): + def __init__(self, color, cog_instance, original_interaction): + super().__init__() + self.color = color + self.cog_instance = cog_instance + self.original_interaction = original_interaction + + cog_name = discord.ui.TextInput( + label="What cog is your suggestion for?", + placeholder="If unsure, put \"GalaxyCogs\".", + style=discord.TextStyle.short, + required=True, + max_length=50 + ) + suggestion_description = discord.ui.TextInput( + label="Describe your suggestion.", + placeholder="A clear and concise description of what your suggestion is.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + alternatives = discord.ui.TextInput( + label="Describe alternatives you've considered.", + placeholder="A clear and concise description of any alternative solutions or features you've cnosidered.", + style=discord.TextStyle.paragraph, + required=True, + max_length=2048 + ) + additional_context = discord.ui.TextInput( + label="Additional Context", + placeholder="Add any other context about your suggestion here.", + style=discord.TextStyle.paragraph, + required=False, + max_length=2048 + ) + + async def on_submit(self, interaction: discord.Interaction): + fields = [self.cog_name, self.suggestion_description, self.alternatives, self.additional_context] + embed = construct_embed(interaction, fields, self.color) + embed.set_author(name="Cog Suggestion") + await self.cog_instance.submit_issue_request(interaction=interaction, original_interaction=self.original_interaction, embed=embed) + +# # Response modal +# class IssueResponseModal(discord.ui.Modal, title="Sending response message..."): def __init__(self, channel, message_id, user, approved): @@ -176,8 +309,9 @@ class IssueResponseModal(discord.ui.Modal, title="Sending response message..."): await message.edit(embed=embed, view=None) await self.user.send(embed=embed) - +# # Configuration modal +# class IssuesConfigurationModal(discord.ui.Modal, title="Modifying configuration..."): def __init__(self, config, ctx):