@@ -343,7 +343,7 @@ async def plugin_enabled(self, ctx):
343
343
)
344
344
await ctx .send (embed = em )
345
345
346
- @plugin .command ( name = 'registry' , aliases = ['list' ])
346
+ @plugin .group ( invoke_without_command = True , name = 'registry' , aliases = ['list' ])
347
347
@checks .has_permissions (PermissionLevel .OWNER )
348
348
async def plugin_registry (self , ctx , * , plugin_name : str = None ):
349
349
"""Shows a list of all approved plugins."""
@@ -380,6 +380,7 @@ def find_index(name):
380
380
381
381
for name , info in registry :
382
382
repo = f"https://github.com/{ info ['repository' ]} "
383
+ url = f"{ repo } /tree/master/{ name } "
383
384
384
385
em = discord .Embed (
385
386
color = self .bot .main_color ,
@@ -392,16 +393,54 @@ def find_index(name):
392
393
name = 'Installation' ,
393
394
value = f'```{ self .bot .prefix } plugins add { name } ```' )
394
395
395
- em .set_author (name = info ['title' ], icon_url = info .get ('icon_url' ))
396
+ em .set_author (name = info ['title' ], icon_url = info .get ('icon_url' ), url = url )
396
397
if info .get ('thumbnail_url' ):
397
398
em .set_thumbnail (url = info .get ('thumbnail_url' ))
399
+ if info .get ('image_url' ):
400
+ em .set_image (url = info .get ('image_url' ))
398
401
399
402
embeds .append (em )
400
403
401
404
paginator = PaginatorSession (ctx , * embeds )
402
405
paginator .current = index
403
406
await paginator .run ()
404
407
408
+ @plugin_registry .command (name = 'compact' )
409
+ async def plugin_registry_compact (self , ctx ):
410
+ """Shows a compact view of all plugins within the registry."""
411
+
412
+ await self .populate_registry ()
413
+
414
+ registry = list (self .registry .items ())
415
+ registry .sort (key = lambda elem : elem [0 ])
416
+
417
+ pages = ['' ]
418
+
419
+ for name , info in registry :
420
+ repo = f"https://github.com/{ info ['repository' ]} "
421
+ url = f"{ repo } /tree/master/{ name } "
422
+ desc = info ['description' ].replace ('\n ' , '' )
423
+ fmt = f"[`{ name } `]({ url } ) - { desc } "
424
+ length = len (fmt ) - len (url ) - 4
425
+ fmt = fmt [:75 + len (url )].strip () + '...' if length > 75 else fmt
426
+ if len (fmt ) + len (pages [- 1 ]) >= 1024 :
427
+ pages .append (fmt + '\n ' )
428
+ else :
429
+ pages [- 1 ] += fmt + '\n '
430
+
431
+ embeds = []
432
+
433
+ for page in pages :
434
+ em = discord .Embed (
435
+ color = self .bot .main_color ,
436
+ description = page ,
437
+ title = 'Plugin Registry (Compact View)' ,
438
+ )
439
+ embeds .append (em )
440
+
441
+ paginator = PaginatorSession (ctx , * embeds )
442
+ await paginator .run ()
443
+
405
444
406
445
def setup (bot ):
407
446
bot .add_cog (Plugins (bot ))
0 commit comments