Skip to content

Commit 025a2c0

Browse files
committed
chore: remove configure command
add: "Enable Mark as Solved" view
1 parent 94c0ff2 commit 025a2c0

File tree

2 files changed

+63
-45
lines changed

2 files changed

+63
-45
lines changed

src/cogs/forum/auto_tagging.py

Lines changed: 10 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,6 @@ async def select_callback(interaction: Interaction):
6262
view.add_item(tag_selection)
6363
return view
6464

65-
66-
def get_forums(db: Settings, guild: Guild) -> View:
67-
"""Gets all forums."""
68-
69-
async def select_callback(interaction: Interaction):
70-
await db.set_setting("dev_help_forum", int(forum_selection.values[0]))
71-
await interaction.response.edit_message(
72-
content=f"Success...",
73-
view=None
74-
)
75-
view.stop()
76-
77-
view = View()
78-
forum_selection = Select(placeholder="Select Forum...")
79-
forum_selection.callback = select_callback
80-
81-
for forum in guild.forums:
82-
forum_selection.add_option(
83-
label=forum.name, value=forum.id
84-
)
85-
86-
view.add_item(forum_selection)
87-
return view
88-
8965
def _getter(guild: Guild, entry: dict) -> Member | Role:
9066
"""Gets the object type and returns it."""
9167

@@ -297,14 +273,23 @@ async def create_new(self, interaction: Interaction):
297273
)
298274

299275
if view.state.finished:
300-
await interaction.followup.send("Success!", ephemeral=True)
301276
await self.db.add_configuration(
302277
forum_id=forum,
303278
entities=tags,
304279
entity_tag_message=tag_message,
305280
reply=reply,
306281
enable_accept_solutions=enable_accept_solutions,
307282
)
283+
284+
if view.state.enable_mark_as_solved:
285+
forum = await self.bot.fetch_channel(view.state.forum)
286+
tag_view = get_tag_options(self.dev_help_tag_db, forum)
287+
await interaction.followup.send(view=tag_view, ephemeral=True)
288+
await tag_view.wait()
289+
290+
await interaction.followup.send("Mark as solved button configured.", ephemeral=True)
291+
292+
await interaction.followup.send("Success!", ephemeral=True)
308293
return
309294

310295
await interaction.followup.send("Cancelled.", ephemeral=True)
@@ -449,24 +434,6 @@ async def solved(self, ctx: Context):
449434
await ctx.channel.add_tags(tag, reason="Solved")
450435
await ctx.channel.edit(name=name)
451436

452-
@command(name="configure", description="Configure the feature.")
453-
async def configure(self, interaction: Interaction):
454-
forum_view = get_forums(self.settings, interaction.guild)
455-
await interaction.response.send_message(view=forum_view, ephemeral=True)
456-
await forum_view.wait()
457-
458-
await self.reload_forum()
459-
460-
if not self.forum.available_tags:
461-
return await interaction.followup.send(
462-
"No tags available for this forum.",
463-
ephemeral=True
464-
)
465-
466-
tag_view = get_tag_options(self.dev_help_tag_db, self.forum)
467-
await interaction.followup.send(view=tag_view, ephemeral=True)
468-
await tag_view.wait()
469-
470437
async def cog_unload(self) -> None:
471438
self.bot.tree.remove_command(
472439
self.ctx_menu.name, type=self.ctx_menu.type

src/ui/views/post_assist.py

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from discord import Interaction, ButtonStyle, ChannelType
44
from discord import TextStyle, Member, Guild, Role
55
from discord.ui import (
6+
Select,
67
View,
78
Modal,
89
Button,
@@ -13,6 +14,7 @@
1314
button,
1415
)
1516

17+
from src.data.admin.settings import Settings
1618
from src.data.forum.post_assist import PostAssistDB
1719

1820

@@ -24,6 +26,7 @@ def __init__(
2426
custom_msg: str = None,
2527
existing_tags: list[Role] | list[Member] = [],
2628
enable_accept_solutions: bool = False,
29+
enable_mark_as_solved: bool = False,
2730
finished: bool = False,
2831
failed: bool = False
2932
):
@@ -33,6 +36,7 @@ def __init__(
3336
self.tag_message: str = tag_message
3437
self.custom_msg: str = custom_msg
3538
self.enable_accept_solutions: bool = enable_accept_solutions
39+
self.enable_mark_as_solved: bool = enable_mark_as_solved
3640
self.finished = finished
3741
self.failed = failed
3842

@@ -183,16 +187,41 @@ async def enable(self, interaction: Interaction, button: Button):
183187
await interaction.response.send_message(
184188
"Mark as solution will be enabled.", ephemeral=True
185189
)
186-
await interaction.followup.send("Success...", ephemeral=True)
187-
self.state.finished = True
190+
191+
enable_mark_as_solved_button = PostAssistEnableMarkAsSolvedButton(self.state)
192+
await interaction.followup.send("Enable Mark as Solved feature?", view=enable_mark_as_solved_button, ephemeral=True)
193+
await enable_mark_as_solved_button.wait()
188194
self.stop()
189195

190196
@button(label="No")
191197
async def disable(self, interaction: Interaction, button: Button):
192198
self.state.enable_accept_solutions = False
193199
self.state.finished = True
200+
await interaction.response.send_message("Accept solutions disabled.", ephemeral=True)
194201
self.stop()
195202

203+
class PostAssistEnableMarkAsSolvedButton(View):
204+
def __init__(self, options: PostAssistState):
205+
super().__init__(timeout=480)
206+
self.state = options
207+
208+
@button(label="Yes")
209+
async def enable_mark_as_solved(self, interaction: Interaction, button: Button):
210+
await interaction.response.defer()
211+
212+
self.state.enable_mark_as_solved = True
213+
self.state.finished = True
214+
215+
await interaction.followup.send("Mark as solved will be enabled.", ephemeral=True)
216+
217+
self.stop()
218+
219+
@button(label="No")
220+
async def disable_mark_as_solved(self, interaction: Interaction, button: Button):
221+
self.state.enable_mark_as_solved = False
222+
self.state.finished = True
223+
await interaction.response.send_message("Mark as solved disabled.", ephemeral=True)
224+
self.stop()
196225

197226
class ConfigurationPagination(View):
198227
def __init__(self, data: list[dict], getter: Callable):
@@ -229,6 +258,28 @@ async def next(self, interaction: Interaction, button: Button):
229258
view=self,
230259
)
231260

261+
def get_forums(db: Settings, guild: Guild) -> View:
262+
"""Gets all forums."""
263+
264+
async def select_callback(interaction: Interaction):
265+
await db.set_setting("dev_help_forum", int(forum_selection.values[0]))
266+
await interaction.response.edit_message(
267+
content=f"Success...",
268+
view=None
269+
)
270+
view.stop()
271+
272+
view = View()
273+
forum_selection = Select(placeholder="Select Forum...")
274+
forum_selection.callback = select_callback
275+
276+
for forum in guild.forums:
277+
forum_selection.add_option(
278+
label=forum.name, value=str(forum.id)
279+
)
280+
281+
view.add_item(forum_selection)
282+
return view
232283

233284
def format_data(data: dict, guild: Guild, getter: Callable):
234285
forum = guild.get_channel(data["forum_id"])

0 commit comments

Comments
 (0)