33from discord import Interaction , ButtonStyle , ChannelType
44from discord import TextStyle , Member , Guild , Role
55from discord .ui import (
6+ Select ,
67 View ,
78 Modal ,
89 Button ,
1314 button ,
1415)
1516
17+ from src .data .admin .settings import Settings
1618from 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
197226class 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
233284def format_data (data : dict , guild : Guild , getter : Callable ):
234285 forum = guild .get_channel (data ["forum_id" ])
0 commit comments