@@ -89,6 +89,7 @@ async def _close(self, closer, silent=False, delete_channel=True,
89
89
log_data = await self .bot .modmail_api .post_log (self .channel .id , {
90
90
'open' : False ,
91
91
'closed_at' : str (datetime .datetime .utcnow ()),
92
+ 'close_message' : message ,
92
93
'closer' : {
93
94
'id' : str (closer .id ),
94
95
'name' : closer .name ,
@@ -98,24 +99,23 @@ async def _close(self, closer, silent=False, delete_channel=True,
98
99
}
99
100
})
100
101
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' ]} "
109
107
110
- user = self .recipient .mention if self .recipient else f'`{ self .id } `'
108
+ user = self .recipient .mention if self .recipient else f'`{ self .id } `'
111
109
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 } "
115
117
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."
119
119
120
120
em = discord .Embed (description = desc , color = discord .Color .red ())
121
121
@@ -172,6 +172,16 @@ def edit_message(self, message_id, message):
172
172
self ._edit_thread_message (self .recipient , message_id , message ),
173
173
self ._edit_thread_message (self .channel , message_id , message )
174
174
)
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
+
175
185
176
186
async def reply (self , message ):
177
187
if not message .content and not message .attachments :
@@ -204,15 +214,15 @@ async def reply(self, message):
204
214
205
215
await asyncio .gather (* tasks )
206
216
207
- async def send (self , message , destination = None , from_mod = False ):
217
+ async def send (self , message , destination = None , from_mod = False , note = False ):
208
218
if self .close_task is not None :
209
219
# cancel closing if a thread message is sent.
210
220
await self .cancel_closure ()
211
221
await self .channel .send (embed = discord .Embed (
212
222
color = discord .Color .red (),
213
223
description = 'Scheduled close has been cancelled.' ))
214
224
215
- if not from_mod :
225
+ if not from_mod and not note :
216
226
self .bot .loop .create_task (
217
227
self .bot .modmail_api .append_log (message , self .channel .id )
218
228
)
@@ -229,9 +239,11 @@ async def send(self, message, destination=None, from_mod=False):
229
239
timestamp = message .created_at
230
240
)
231
241
242
+ system_avatar_url = 'https://discordapp.com/assets/f78426a064bc9dd24847519259bc42af.png'
243
+
232
244
# 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 ,
235
247
url = message .jump_url )
236
248
237
249
image_types = ['.png' , '.jpg' , '.gif' , '.jpeg' , '.webp' ]
@@ -282,6 +294,9 @@ def is_image_url(u, _):
282
294
if from_mod :
283
295
em .color = discord .Color .green ()
284
296
em .set_footer (text = f'Moderator' )
297
+ elif note :
298
+ em .color = discord .Color .blurple ()
299
+ em .set_footer (text = f'System ({ author .name } )' )
285
300
else :
286
301
em .color = discord .Color .gold ()
287
302
em .set_footer (text = f'User' )
0 commit comments