@@ -41,19 +41,59 @@ def ready(self, flag):
4141 if flag is True :
4242 self .ready_event .set ()
4343
44- async def _close_after (self , after ):
44+ async def _close_after (self , after , ** kwargs ):
4545 await asyncio .sleep (after )
46- await self .close ()
46+ await self .close (** kwargs )
4747
48- async def close (self , * , after = 0 ):
48+ async def close (self , * , closer , after = 0 , silent = False ):
4949 '''Close a thread now or after a set time in seconds'''
5050 if after > 0 :
5151 if self .close_task is not None and not self .close_task .cancelled ():
5252 self .close_task .cancel ()
53- self .close_task = asyncio .create_task (self ._close_after (after ))
54- else :
55- del self .manager .cache [self .id ]
56- await self .channel .delete ()
53+ self .close_task = asyncio .create_task (self ._close_after (after , closer = closer , silent = silent ))
54+ return
55+
56+ print (self .manager .cache )
57+ print (self .id )
58+ print (self .id in self .manager .cache )
59+ del self .manager .cache [self .id ]
60+ print (self .manager .cache )
61+
62+ await self .channel .delete ()
63+
64+ # Logging
65+ log_data = await self .bot .modmail_api .post_log (self .channel .id , {
66+ 'open' : False , 'closed_at' : str (datetime .datetime .utcnow ()), 'closer' : {
67+ 'id' : str (closer .id ),
68+ 'name' : closer .name ,
69+ 'discriminator' : closer .discriminator ,
70+ 'avatar_url' : closer .avatar_url ,
71+ 'mod' : True
72+ }
73+ })
74+
75+ if isinstance (log_data , str ):
76+ print (log_data ) # error
77+
78+ log_url = f"https://logs.modmail.tk/{ log_data ['user_id' ]} /{ log_data ['key' ]} "
79+
80+ user = self .recipient .mention if self .recipient else f'`{ self .id } `'
81+
82+ desc = f"[`{ log_data ['key' ]} `]({ log_url } ) { closer .mention } closed a thread with { user } "
83+
84+ em = discord .Embed (description = desc , color = discord .Color .red ())
85+ em .set_author (name = 'Thread closed' , url = log_url )
86+
87+ tasks = [self .bot .log_channel .send (embed = em )]
88+
89+ em = discord .Embed (title = 'Thread Closed' )
90+ em .description = f'{ closer .mention } has closed this modmail thread.'
91+ em .color = discord .Color .red ()
92+
93+ if not silent :
94+ tasks .append (self .recipient .send (embed = em ))
95+
96+ await asyncio .gather (* tasks )
5797
5898 async def _edit_thread_message (self , channel , message_id , message ):
5999 async for msg in channel .history ():
0 commit comments