@@ -89,6 +89,7 @@ async def _close(self, closer, silent=False, delete_channel=True,
8989 log_data = await self .bot .modmail_api .post_log (self .channel .id , {
9090 'open' : False ,
9191 'closed_at' : str (datetime .datetime .utcnow ()),
92+ 'close_message' : message ,
9293 'closer' : {
9394 'id' : str (closer .id ),
9495 'name' : closer .name ,
@@ -98,24 +99,23 @@ async def _close(self, closer, silent=False, delete_channel=True,
9899 }
99100 })
100101
101- if isinstance (log_data , str ):
102- print (log_data ) # errored somehow on server
103- return
104-
105- if self .bot .selfhosted :
106- log_url = f"{ self .bot .config .log_url .strip ('/' )} /logs/{ log_data ['key' ]} "
107- else :
108- log_url = f"https://logs.modmail.tk/{ log_data ['key' ]} "
102+ if not isinstance (log_data , str ) or log_data is not None :
103+ if self .bot .selfhosted :
104+ log_url = f"{ self .bot .config .log_url .strip ('/' )} /logs/{ log_data ['key' ]} "
105+ else :
106+ log_url = f"https://logs.modmail.tk/{ log_data ['key' ]} "
109107
110- user = self .recipient .mention if self .recipient else f'`{ self .id } `'
108+ user = self .recipient .mention if self .recipient else f'`{ self .id } `'
111109
112- if log_data ['messages' ]:
113- msg = str (log_data ['messages' ][0 ]['content' ])
114- sneak_peak = msg if len (msg ) < 50 else msg [:48 ] + '...'
110+ if log_data ['messages' ]:
111+ msg = str (log_data ['messages' ][0 ]['content' ])
112+ sneak_peak = msg if len (msg ) < 50 else msg [:48 ] + '...'
113+ else :
114+ sneak_peak = 'No content'
115+
116+ desc = f"{ user } [`{ log_data ['key' ]} `]({ log_url } ): { sneak_peak } "
115117 else :
116- sneak_peak = 'No content'
117-
118- desc = f"{ user } [`{ log_data ['key' ]} `]({ log_url } ): { sneak_peak } "
118+ desc = "Could not resolve log url."
119119
120120 em = discord .Embed (description = desc , color = discord .Color .red ())
121121
@@ -172,6 +172,16 @@ def edit_message(self, message_id, message):
172172 self ._edit_thread_message (self .recipient , message_id , message ),
173173 self ._edit_thread_message (self .channel , message_id , message )
174174 )
175+
176+ async def note (self , message ):
177+ if not message .content and not message .attachments :
178+ raise commands .UserInputError
179+
180+ await asyncio .gather (
181+ self .bot .modmail_api .append_log (message , self .channel .id , type = 'system' ),
182+ self .send (message , self .channel , note = True )
183+ )
184+
175185
176186 async def reply (self , message ):
177187 if not message .content and not message .attachments :
@@ -204,15 +214,15 @@ async def reply(self, message):
204214
205215 await asyncio .gather (* tasks )
206216
207- async def send (self , message , destination = None , from_mod = False ):
217+ async def send (self , message , destination = None , from_mod = False , note = False ):
208218 if self .close_task is not None :
209219 # cancel closing if a thread message is sent.
210220 await self .cancel_closure ()
211221 await self .channel .send (embed = discord .Embed (
212222 color = discord .Color .red (),
213223 description = 'Scheduled close has been cancelled.' ))
214224
215- if not from_mod :
225+ if not from_mod and not note :
216226 self .bot .loop .create_task (
217227 self .bot .modmail_api .append_log (message , self .channel .id )
218228 )
@@ -229,9 +239,11 @@ async def send(self, message, destination=None, from_mod=False):
229239 timestamp = message .created_at
230240 )
231241
242+ system_avatar_url = 'https://discordapp.com/assets/f78426a064bc9dd24847519259bc42af.png'
243+
232244 # store message id in hidden url
233- em .set_author (name = str (author ),
234- icon_url = author .avatar_url ,
245+ em .set_author (name = str (author ) if not note else 'Note' ,
246+ icon_url = author .avatar_url if not note else system_avatar_url ,
235247 url = message .jump_url )
236248
237249 image_types = ['.png' , '.jpg' , '.gif' , '.jpeg' , '.webp' ]
@@ -282,6 +294,9 @@ def is_image_url(u, _):
282294 if from_mod :
283295 em .color = discord .Color .green ()
284296 em .set_footer (text = f'Moderator' )
297+ elif note :
298+ em .color = discord .Color .blurple ()
299+ em .set_footer (text = f'System ({ author .name } )' )
285300 else :
286301 em .color = discord .Color .gold ()
287302 em .set_footer (text = f'User' )
0 commit comments