Add url configuration
This commit is contained in:
parent
a91bf42155
commit
bd10d8cfb1
@ -1,5 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import re
|
||||||
|
import string
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
@ -11,6 +13,34 @@ from redbot.core.data_manager import cog_data_path
|
|||||||
log = logging.getLogger("red.fox-v3.cogguide")
|
log = logging.getLogger("red.fox-v3.cogguide")
|
||||||
|
|
||||||
|
|
||||||
|
def get_parent_tree(command: commands.Command):
|
||||||
|
out = f"{command.name}"
|
||||||
|
if command.parent:
|
||||||
|
# out = f"{get_parent_tree(command.parent)}-" + out
|
||||||
|
out = f"{'-'.join(command.full_parent_name.split())}-" + out
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def markdown_link_replace(match, starts_with_text=None):
|
||||||
|
"""Converts a markdown match to restructuredtext match"""
|
||||||
|
text = match.group(1)
|
||||||
|
url = match.group(2)
|
||||||
|
if starts_with_text and url.startswith(starts_with_text):
|
||||||
|
url = url[len(starts_with_text):]
|
||||||
|
url = url[:url.find('.')]
|
||||||
|
return f":ref:`{text} <{url}>`"
|
||||||
|
|
||||||
|
return f"{text}: {url}"
|
||||||
|
|
||||||
|
|
||||||
|
def prepare_description(command: commands.Command):
|
||||||
|
description = command.description or command.help
|
||||||
|
description = description.replace("`", "``")
|
||||||
|
pattern = re.compile("\[(.+)]\s?\((https?:\/\/[\w\d.\/?=#]+)\)")
|
||||||
|
description = pattern.sub(markdown_link_replace, description)
|
||||||
|
return description
|
||||||
|
|
||||||
|
|
||||||
class CogGuide(commands.Cog):
|
class CogGuide(commands.Cog):
|
||||||
"""
|
"""
|
||||||
Cog to create cog guides
|
Cog to create cog guides
|
||||||
@ -21,16 +51,33 @@ class CogGuide(commands.Cog):
|
|||||||
def __init__(self, bot: Red):
|
def __init__(self, bot: Red):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
self.config = Config.get_conf(self, identifier=0, force_registration=True)
|
self.config = Config.get_conf(self, identifier=6711110371117105100101, force_registration=True)
|
||||||
|
|
||||||
default_guild = {}
|
default_global = {"starts_with": None}
|
||||||
|
self.config.register_global(**default_global)
|
||||||
self.config.register_guild(**default_guild)
|
|
||||||
|
|
||||||
async def red_delete_data_for_user(self, **kwargs):
|
async def red_delete_data_for_user(self, **kwargs):
|
||||||
"""Nothing to delete"""
|
"""Nothing to delete"""
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@commands.group()
|
||||||
|
async def cogguideset(self, ctx: commands.Context):
|
||||||
|
"""Base command for configuring cogguide"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
@cogguideset.command(name="url")
|
||||||
|
async def cogguideset_url(self, ctx: commands.Context, url: str):
|
||||||
|
"""Sets the url of your ReadTheDocs for creating references
|
||||||
|
|
||||||
|
For example: 'https://docs.discord.red/en/stable/' for Red docs
|
||||||
|
"""
|
||||||
|
if not url:
|
||||||
|
await self.config.starts_with.clear()
|
||||||
|
else:
|
||||||
|
await self.config.starts_with.set(url)
|
||||||
|
|
||||||
|
await ctx.tick()
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
async def allcogguides(self, ctx: commands.Context):
|
async def allcogguides(self, ctx: commands.Context):
|
||||||
"""
|
"""
|
||||||
@ -110,20 +157,15 @@ Commands
|
|||||||
--------
|
--------
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def get_parent_tree(command: commands.Command):
|
|
||||||
out = f"{command.name}"
|
|
||||||
if command.parent:
|
|
||||||
# out = f"{get_parent_tree(command.parent)}-" + out
|
|
||||||
out = f"{'-'.join(command.full_parent_name.split())}-" + out
|
|
||||||
return out
|
|
||||||
|
|
||||||
def get_command_rst(command: commands.Command):
|
def get_command_rst(command: commands.Command):
|
||||||
|
description = prepare_description(command)
|
||||||
|
|
||||||
cog_command = f"""
|
cog_command = f"""
|
||||||
.. {reference}-command-{get_parent_tree(command)}:
|
.. {reference}-command-{get_parent_tree(command)}:
|
||||||
|
|
||||||
{'^' * len(command.name) if not command.parent else '"' * len(command.name)}
|
{'^' * len(command.qualified_name) if not command.parent else '"' * len(command.qualified_name)}
|
||||||
{command.name}
|
{command.qualified_name}
|
||||||
{'^' * len(command.name) if not command.parent else '"' * len(command.name)}
|
{'^' * len(command.qualified_name) if not command.parent else '"' * len(command.qualified_name)}
|
||||||
"""
|
"""
|
||||||
if command.requires.privilege_level in privilege_levels:
|
if command.requires.privilege_level in privilege_levels:
|
||||||
cog_command += f"""
|
cog_command += f"""
|
||||||
@ -138,7 +180,7 @@ Commands
|
|||||||
|
|
||||||
**Description**
|
**Description**
|
||||||
|
|
||||||
{command.description or command.help}
|
{description}
|
||||||
"""
|
"""
|
||||||
return cog_command
|
return cog_command
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user