async def plugin_registry(self, ctx, *, plugin_name: typing.Union[int, str] = None): """ Shows a list of all approved plugins. Usage: `{prefix}plugin registry` Details about all plugins. `{prefix}plugin registry plugin-name` Details about the indicated plugin. `{prefix}plugin registry page-number` Jump to a page in the registry. """ await self.populate_registry() embeds = [] registry = sorted(self.registry.items(), key=lambda elem: elem[0]) if isinstance(plugin_name, int): index = plugin_name - 1 if index < 0: index = 0 if index >= len(registry): index = len(registry) - 1 else: index = next( (i for i, (n, _) in enumerate(registry) if plugin_name == n), 0 ) if not index and plugin_name is not None: embed = discord.Embed( color=discord.Color.red(), description=f'Could not find a plugin with name "{plugin_name}" within the registry.', ) matches = get_close_matches(plugin_name, self.registry.keys()) if matches: embed.add_field( name="Perhaps you meant:", value="\n".join(f"`{m}`" for m in matches), ) return await ctx.send(embed=embed) for name, details in registry: repo = f"https://github.com/{details['repository']}" url = f"{repo}/tree/master/{name}" embed = discord.Embed( color=self.bot.main_color, description=details["description"], url=repo, title=details["repository"], ) embed.add_field( name="Installation", value=f"```{self.bot.prefix}plugins add {name}```" ) embed.set_author( name=details["title"], icon_url=details.get("icon_url"), url=url ) if details.get("thumbnail_url"): embed.set_thumbnail(url=details.get("thumbnail_url")) if details.get("image_url"): embed.set_image(url=details.get("image_url")) embeds.append(embed) paginator = EmbedPaginatorSession(ctx, *embeds) paginator.current = index await paginator.run()
async def plugins_registry(self, ctx, *, plugin_name: typing.Union[int, str] = None): """ Shows a list of all approved plugins. Usage: `{prefix}plugin registry` Details about all plugins. `{prefix}plugin registry plugin-name` Details about the indicated plugin. `{prefix}plugin registry page-number` Jump to a page in the registry. """ await self.populate_registry() embeds = [] registry = sorted(self.registry.items(), key=lambda elem: elem[0]) if isinstance(plugin_name, int): index = plugin_name - 1 if index < 0: index = 0 if index >= len(registry): index = len(registry) - 1 else: index = next( (i for i, (n, _) in enumerate(registry) if plugin_name == n), 0) if not index and plugin_name is not None: embed = discord.Embed( color=self.bot.error_color, description= f'Could not find a plugin with name "{plugin_name}" within the registry.', ) matches = get_close_matches(plugin_name, self.registry.keys()) if matches: embed.add_field(name="Perhaps you meant:", value="\n".join(f"`{m}`" for m in matches)) return await ctx.send(embed=embed) for name, details in registry: details = self.registry[name] user, repo = details["repository"].split("/", maxsplit=1) branch = details.get("branch") plugin = Plugin(user, repo, name, branch) embed = discord.Embed( color=self.bot.main_color, description=details["description"], url=plugin.link, title=details["repository"], ) embed.add_field(name="Installation", value=f"```{self.bot.prefix}plugins add {name}```") embed.set_author(name=details["title"], icon_url=details.get("icon_url"), url=plugin.link) if details.get("thumbnail_url"): embed.set_thumbnail(url=details.get("thumbnail_url")) if details.get("image_url"): embed.set_image(url=details.get("image_url")) if plugin in self.loaded_plugins: embed.set_footer(text="This plugin is currently loaded.") else: required_version = details.get("bot_version", False) if required_version and self.bot.version < parse_version( required_version): embed.set_footer( text="Your bot is unable to install this plugin, " f"minimum required version is v{required_version}.") else: embed.set_footer( text="Your bot is able to install this plugin.") embeds.append(embed) paginator = EmbedPaginatorSession(ctx, *embeds) paginator.current = index await paginator.run()
async def vplugins_registry(self, ctx, *, vplugin_name: typing.Union[int, str] = None): """ Mostra una lista di plugin del database di Vincy. Utilizzo: `{prefix}plugin registry` Dettagli riguardo tutti i plugin. `{prefix}plugin registry nome-plugin` Dettagli riguardo il plugin che hai specificato. `{prefix}plugin registry numero-pagina` Vai ad una pagina del registro. """ await self.populate_vregistry() embeds = [] registry = sorted(self.registry.items(), key=lambda elem: elem[0]) if isinstance(vplugin_name, int): index = vplugin_name - 1 if index < 0: index = 0 if index >= len(registry): index = len(registry) - 1 else: index = next( (i for i, (n, _) in enumerate(registry) if vplugin_name == n), 0) if not index and vplugin_name is not None: embed = discord.Embed( color=self.bot.error_color, description= f'Non è stato trovato alcun plugin col nome "{vplugin_name}" nel registro.', ) matches = get_close_matches(vplugin_name, self.registry.keys()) if matches: embed.add_field(name="Forse intendevi:", value="\n".join(f"`{m}`" for m in matches)) return await ctx.send(embed=embed) for name, details in registry: details = self.registry[name] user, repo = details["repository"].split("/", maxsplit=1) branch = details.get("branch") plugin = Plugina(user, repo, name, branch) embed = discord.Embed( color=self.bot.main_color, description=details["description"], url=plugin.link, title=details["repository"], ) embed.add_field( name="Installazione", value=f"```{self.bot.prefix}vplugins add {name}```") embed.set_author(name=details["title"], icon_url=details.get("icon_url"), url=plugin.link) if details.get("thumbnail_url"): embed.set_thumbnail(url=details.get("thumbnail_url")) if details.get("image_url"): embed.set_image(url=details.get("image_url")) if plugin in self.loaded_plugins: embed.set_footer(text="Questo plugin è già caricato.") else: required_version = details.get("bot_version", False) if required_version and self.bot.version < parse_version( required_version): embed.set_footer( text="Il bot non può installare questo plugin, " f"la versione minima richiesta è v{required_version}.") else: embed.set_footer( text="Il tuo bot può installare questo plugin.") embeds.append(embed) paginator = EmbedPaginatorSession(ctx, *embeds) paginator.current = index await paginator.run()