@@ -13,6 +13,9 @@ class Modmail:
13
13
14
14
def __init__ (self , bot ):
15
15
self .bot = bot
16
+
17
+ def obj (arg ):
18
+ return discord .Object (int (arg ))
16
19
17
20
@commands .command ()
18
21
@trigger_typing
@@ -171,7 +174,7 @@ async def nsfw(self, ctx):
171
174
@commands .command ()
172
175
@commands .has_permissions (manage_messages = True )
173
176
@trigger_typing
174
- async def logs (self , ctx , * , member : Union [discord .Member , discord .User ]= None ):
177
+ async def logs (self , ctx , * , member : Union [discord .Member , discord .User , obj ]= None ):
175
178
"""Shows a list of previous modmail thread logs of a member."""
176
179
177
180
if not member :
@@ -181,13 +184,15 @@ async def logs(self, ctx, *, member: Union[discord.Member, discord.User]=None):
181
184
182
185
user = member or thread .recipient
183
186
187
+ icon_url = getattr (user , 'avatar_url' , 'https://cdn.discordapp.com/embed/avatars/0.png' )
188
+
184
189
logs = await self .bot .modmail_api .get_user_logs (user .id )
185
190
186
191
if not any (not e ['open' ] for e in logs ):
187
192
return await ctx .send ('This user has no previous logs.' )
188
193
189
194
em = discord .Embed (color = discord .Color .green ())
190
- em .set_author (name = 'Previous Logs' , icon_url = user . avatar_url )
195
+ em .set_author (name = 'Previous Logs' , icon_url = icon_url )
191
196
192
197
embeds = [em ]
193
198
@@ -200,20 +205,31 @@ async def logs(self, ctx, *, member: Union[discord.Member, discord.User]=None):
200
205
for index , entry in enumerate (closed_logs ):
201
206
if len (embeds [- 1 ].fields ) == 3 :
202
207
em = discord .Embed (color = discord .Color .green ())
203
- em .set_author (name = 'Previous Logs' , icon_url = user . avatar_url )
208
+ em .set_author (name = 'Previous Logs' , icon_url = icon_url )
204
209
embeds .append (em )
205
210
206
211
date = dateutil .parser .parse (entry ['created_at' ])
212
+
207
213
new_day = date .strftime (r'%d %b %Y' )
214
+ time = date .strftime (r'%H:%M' )
208
215
209
216
key = entry ['key' ]
210
217
user_id = entry ['user_id' ]
211
218
log_url = f"https://logs.modmail.tk/{ user_id } /{ key } "
212
219
213
- fmt += f"[`{ key } `]({ log_url } )\n "
220
+ truncate = lambda c : c [:47 ] + '...' if len (c ) > 50 else c
221
+
222
+ if entry ['messages' ]:
223
+ short_desc = truncate (entry ['messages' ][0 ]['content' ]) or 'No content'
224
+ else :
225
+ short_desc = 'No content'
226
+
227
+ fmt += f"[`[{ time } ]{ key } `]({ log_url } ) - { short_desc } \n "
228
+
229
+ print (fmt )
214
230
215
231
if current_day != new_day or index == len (closed_logs ) - 1 :
216
- embeds [- 1 ].add_field (name = current_day , value = fmt )
232
+ embeds [- 1 ].add_field (name = current_day , value = fmt , inline = False )
217
233
current_day = new_day
218
234
fmt = ''
219
235
@@ -286,9 +302,6 @@ async def contact(self, ctx, *, user: Union[discord.Member, discord.User]):
286
302
287
303
await ctx .send (embed = em )
288
304
289
- def obj (arg ):
290
- return discord .Object (int (arg ))
291
-
292
305
@commands .command ()
293
306
@trigger_typing
294
307
@commands .has_permissions (manage_channels = True )
0 commit comments