@@ -42,7 +42,11 @@ def is_help_forum_post(channel: discord.abc.GuildChannel) -> bool:
4242 return getattr (channel , "parent_id" , None ) == constants .Channels .python_help
4343
4444
45- async def _close_help_post (closed_post : discord .Thread , closing_reason : _stats .ClosingReason ) -> None :
45+ async def _close_help_post (
46+ closed_post : discord .Thread ,
47+ closing_reason : _stats .ClosingReason ,
48+ scheduler : scheduling .Scheduler ,
49+ ) -> None :
4650 """Close the help post and record stats."""
4751 # Get Thread with updated metadata (such as the title)
4852 closed_post = await get_or_fetch_channel (bot .instance , closed_post .id )
@@ -72,6 +76,8 @@ async def _close_help_post(closed_post: discord.Thread, closing_reason: _stats.C
7276 locked = True ,
7377 reason = "Locked a closed help post" ,
7478 )
79+ if closed_post .id in scheduler :
80+ scheduler .cancel (closed_post .id )
7581
7682 _stats .report_post_count ()
7783 await _stats .report_complete_session (closed_post , closing_reason )
@@ -88,14 +94,18 @@ async def send_opened_post_message(post: discord.Thread) -> None:
8894 await post .send (embed = embed , content = post .owner .mention )
8995
9096
91- async def help_post_opened (opened_post : discord .Thread , * , reopen : bool = False ) -> None :
97+ async def help_post_opened (
98+ opened_post : discord .Thread ,
99+ * ,
100+ scheduler : scheduling .Scheduler ,
101+ ) -> None :
92102 """Apply new post logic to a new help forum post."""
93103 _stats .report_post_count ()
94104 bot .instance .stats .incr ("help.claimed" )
95105
96106 if not isinstance (opened_post .owner , discord .Member ):
97107 log .debug (f"{ opened_post .owner_id } isn't a member. Closing post." )
98- await _close_help_post (opened_post , _stats .ClosingReason .CLEANUP )
108+ await _close_help_post (opened_post , _stats .ClosingReason .CLEANUP , scheduler )
99109 return
100110
101111 try :
@@ -114,12 +124,12 @@ async def help_post_opened(opened_post: discord.Thread, *, reopen: bool = False)
114124 await send_opened_post_message (opened_post )
115125
116126
117- async def help_post_closed (closed_post : discord .Thread ) -> None :
127+ async def help_post_closed (closed_post : discord .Thread , scheduler : scheduling . Scheduler ) -> None :
118128 """Apply archive logic to a manually closed help forum post."""
119- await _close_help_post (closed_post , _stats .ClosingReason .COMMAND )
129+ await _close_help_post (closed_post , _stats .ClosingReason .COMMAND , scheduler )
120130
121131
122- async def help_post_archived (archived_post : discord .Thread ) -> None :
132+ async def help_post_archived (archived_post : discord .Thread , scheduler : scheduling . Scheduler ) -> None :
123133 """Apply archive logic to an archived help forum post."""
124134 async for thread_update in archived_post .guild .audit_logs (limit = 50 , action = discord .AuditLogAction .thread_update ):
125135 if thread_update .target .id != archived_post .id :
@@ -130,7 +140,7 @@ async def help_post_archived(archived_post: discord.Thread) -> None:
130140 if thread_update .user .id == bot .instance .user .id :
131141 return
132142
133- await _close_help_post (archived_post , _stats .ClosingReason .INACTIVE )
143+ await _close_help_post (archived_post , _stats .ClosingReason .INACTIVE , scheduler )
134144
135145
136146async def help_post_deleted (deleted_post_event : discord .RawThreadDeleteEvent ) -> None :
@@ -194,7 +204,7 @@ async def maybe_archive_idle_post(post: discord.Thread, scheduler: scheduling.Sc
194204 log .info (
195205 f"#{ post } ({ post .id } ) is idle past { closing_time } and will be archived. Reason: { closing_reason .value } "
196206 )
197- await _close_help_post (post , closing_reason )
207+ await _close_help_post (post , closing_reason , scheduler )
198208 return
199209
200210 if post .id in scheduler :
0 commit comments