1414)
1515
1616
17- class PostAssistState () :
17+ class PostAssistState :
1818 def __init__ (
1919 self ,
2020 forum : int = None ,
2121 tag_message : str = None ,
2222 custom_msg : str = None ,
2323 existing_tags : list [Role ] | list [Member ] = [],
24+ enable_accept_solutions : bool = False ,
2425 finished : bool = False ,
2526 ):
2627 self .forum : int = forum
2728 self .tag_list : list [tuple [int , str ]] = []
2829 self .existing_tags : list [Role ] | list [Member ] = existing_tags or []
2930 self .tag_message : str = tag_message
3031 self .custom_msg : str = custom_msg
32+ self .enable_accept_solutions : bool = enable_accept_solutions
3133 self .finished = finished
3234
3335
3436class ConfigurePostAssist (View ):
3537 def __init__ (
36- self ,
37- forum : int = None ,
38- tag_message : str = None ,
39- custom_msg : str = None
38+ self , forum : int = None , tag_message : str = None , custom_msg : str = None
4039 ):
4140 super ().__init__ (timeout = 480 )
4241 self .state = PostAssistState (
4342 forum = forum ,
4443 tag_message = tag_message ,
4544 custom_msg = custom_msg ,
4645 existing_tags = [],
46+ enable_accept_solutions = False ,
4747 )
4848
4949 @select (
5050 cls = ChannelSelect ,
5151 placeholder = "Select forum..." ,
5252 channel_types = [ChannelType .forum ],
5353 )
54- async def select_forum (
55- self ,
56- interaction : Interaction ,
57- selection : ChannelSelect
58- ):
54+ async def select_forum (self , interaction : Interaction , selection : ChannelSelect ):
5955 if self .state .forum and self .state .forum != selection .values [0 ].id :
6056 return await interaction .response .send_message (
6157 f"Please select this forum -> { interaction .guild .get_channel (self .state .forum ).mention } ." ,
@@ -100,13 +96,12 @@ def __init__(self, options: PostAssistState):
10096 self .state = options
10197 self .selection = [tag for tag in self .state .existing_tags ]
10298
103- select_menu = [item for item in
104- self .children if isinstance (item , MentionableSelect )][0 ]
99+ select_menu = [
100+ item for item in self .children if isinstance (item , MentionableSelect )
101+ ][0 ]
105102 select_menu .default_values = self .state .existing_tags
106103
107- @select (cls = MentionableSelect ,
108- placeholder = "Select member/roles..." ,
109- max_values = 25 )
104+ @select (cls = MentionableSelect , placeholder = "Select member/roles..." , max_values = 25 )
110105 async def select_entities (
111106 self , interaction : Interaction , selection : MentionableSelect
112107 ):
@@ -123,9 +118,7 @@ async def submit(self, interaction: Interaction, button: Button):
123118 for entity in self .selection
124119 ]
125120
126- modal = PostAssistTagMessage (
127- self .state , required = bool (self .state .tag_list )
128- )
121+ modal = PostAssistTagMessage (self .state , required = bool (self .state .tag_list ))
129122 await interaction .response .send_modal (modal )
130123 await modal .wait ()
131124 self .stop ()
@@ -150,7 +143,34 @@ def __init__(self, options: PostAssistState, required: bool):
150143
151144 async def on_submit (self , interaction : Interaction ) -> None :
152145 self .state .tag_message = self .message .value
153- await interaction .response .send_message ("Success..." , ephemeral = True )
146+
147+ view = PostAssistMarkAsSolution (self .state )
148+ await interaction .response .send_message (
149+ "Enable Accept Solution feature?" , view = view , ephemeral = True
150+ )
151+ await view .wait ()
152+ self .stop ()
153+
154+
155+ class PostAssistMarkAsSolution (View ):
156+ def __init__ (self , options : PostAssistState ):
157+ super ().__init__ (timeout = 480 )
158+ self .state = options
159+
160+ @button (label = "Yes" )
161+ async def enable (self , interaction : Interaction , button : Button ):
162+ self .state .enable_accept_solutions = True
163+
164+ await interaction .response .send_message (
165+ "Mark as solution will be enabled." , ephemeral = True
166+ )
167+ await interaction .followup .send ("Success..." , ephemeral = True )
168+ self .state .finished = True
169+ self .stop ()
170+
171+ @button (label = "No" )
172+ async def disable (self , interaction : Interaction , button : Button ):
173+ self .state .enable_accept_solutions = False
154174 self .state .finished = True
155175 self .stop ()
156176
@@ -172,9 +192,7 @@ async def previous(self, interaction: Interaction, button: Button):
172192 button .disabled = True
173193
174194 await interaction .response .edit_message (
175- content = format_data (self .data [self .page ],
176- interaction .guild ,
177- self .getter ),
195+ content = format_data (self .data [self .page ], interaction .guild , self .getter ),
178196 view = self ,
179197 )
180198
@@ -188,9 +206,7 @@ async def next(self, interaction: Interaction, button: Button):
188206 button .disabled = True
189207
190208 await interaction .response .edit_message (
191- content = format_data (self .data [self .page ],
192- interaction .guild ,
193- self .getter ),
209+ content = format_data (self .data [self .page ], interaction .guild , self .getter ),
194210 view = self ,
195211 )
196212
0 commit comments