@@ -161,6 +161,44 @@ async def update_submission_list(last_message, id, name):
161161 return await last_message .edit (content = new_content )
162162
163163
164+ async def generate_submission_list (self ):
165+ """ Edits the submission list in the submission channel.
166+ Takes bot (self) as an argument -- so that the bot may retrieve the channel & message.
167+ """
168+ submission_channel = await get_submission_channel (DEFAULT )
169+ channel = self .bot .get_channel (submission_channel )
170+ async for message in channel .history (limit = 3 ):
171+ # Check if the message was sent by the bot
172+ if message .author == self .bot .user :
173+ message_to_edit = message
174+
175+
176+ async with get_session () as session :
177+
178+ active_task = (await session .scalars (select (Submissions .task ))).first ()
179+ submissions = (await session .scalars (select (Submissions ).where (Submissions .task == active_task )))
180+ formatted_submissions = "**__Current Submissions:__**"
181+
182+ # Update submission list for a solo submission
183+ for submission in submissions :
184+ if not await is_in_team (submission .user_id ):
185+ formatted_submissions += f"\n { submission .index } . { await get_display_name (submission .user_id )} ||<@{ submission .user_id } >||"
186+
187+
188+ # Generate submission list for a team submission
189+ else :
190+ ids = await get_team_ids (submission .user_id )
191+ members = await get_team_members (ids )
192+ team_name = await get_team_name (submission .user_id )
193+ mentions = ' ' .join ([f'<@{ user_id } >' for user_id in ids ])
194+
195+ formatted_submissions += (
196+ f"\n { submission .index } . { team_name } ({ ' & ' .join (members )} ) ||{ mentions } ||"
197+ )
198+
199+ return await message_to_edit .edit (content = formatted_submissions )
200+
201+
164202
165203async def handle_submissions (message , self ):
166204 author = message .author
@@ -197,16 +235,17 @@ async def handle_submissions(message, self):
197235 author_id = await get_leader (author_id )
198236 author_display_name = await get_display_name (author_id )
199237
238+ # New entry to the list in #submissions
200239 if last_message :
201240
202241 # Add a new line only if it's a new user ID submitting
203242 if await first_time_submission (author_id ):
204243
205244 await update_submission_list (last_message , author_id , author_display_name )
206245
246+
207247 else :
208- # There are no submissions (brand-new task); send a message on the first submission -> this is for blank
209- # channels
248+ # There are no submissions (brand-new task); send a message on the first submission
210249 await post_submission_list (channel , author_id , author_display_name )
211250
212251 ##################################################################
0 commit comments