SeaCogs/seautils/seautils.py

42 lines
1.5 KiB
Python

# _____ _
# / ____| (_)
# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __
# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__|
# ____) | __/ (_| \__ \\ V V /| | | | | | | | | | | | __/ |
# |_____/ \___|\__,_|___/ \_/\_/ |_|_| |_| |_|_| |_| |_|\___|_|
import inspect
from redbot.core import commands
from redbot.core.bot import Red
from redbot.core.utils import chat_formatting as cf
class SeaUtils(commands.Cog):
"""A collection of random utilities."""
__author__ = ["SeaswimmerTheFsh"]
__version__ = "1.0.0"
def __init__(self, bot: Red):
self.bot = bot
def format_help_for_context(self, ctx: commands.Context) -> str:
pre_processed = super().format_help_for_context(ctx) or ""
n = "\n" if "\n\n" not in pre_processed else ""
text = [
f"{pre_processed}{n}",
f"Cog Version: **{self.__version__}**",
f"Author: {cf.humanize_list(self.__author__)}"
]
return "\n".join(text)
@commands.command(aliases=["source"])
@commands.is_owner()
async def showcode(self, ctx: commands.Context, *, command: str):
"""Show the code for a particular command."""
try:
content = cf.pagify(inspect.getsource(self.bot.get_command(command).callback))
await ctx.send_interactive(content, box_lang='py')
except (OSError, AttributeError):
await ctx.send("Command not found.")