feat(commands|Utils): add source command
This commit is contained in:
parent
3587a8f8a4
commit
5a65fe1a6c
2 changed files with 44 additions and 0 deletions
|
@ -12,6 +12,7 @@ disable=
|
||||||
C0114, # missing-module-docstring
|
C0114, # missing-module-docstring
|
||||||
C0115, # missing-class-docstring
|
C0115, # missing-class-docstring
|
||||||
C0116, # missing-function-docstring
|
C0116, # missing-function-docstring
|
||||||
|
W0511, # fixme
|
||||||
W0703, # broad-except
|
W0703, # broad-except
|
||||||
R0801, # duplicate-code
|
R0801, # duplicate-code
|
||||||
R0902, # too-many-instance-attributes
|
R0902, # too-many-instance-attributes
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
|
@ -205,3 +207,44 @@ class Utils(commands.Cog, name="Utils"):
|
||||||
)
|
)
|
||||||
|
|
||||||
await ctx.send(embed=e)
|
await ctx.send(embed=e)
|
||||||
|
|
||||||
|
# =========================================================================
|
||||||
|
|
||||||
|
@command_extra(name="source")
|
||||||
|
async def _invite(self, ctx: ContextPlus, *, name=None):
|
||||||
|
base_url = "https://github.com/Rom1-J/tuxbot-bot"
|
||||||
|
|
||||||
|
if not name:
|
||||||
|
return await ctx.send(f"<{base_url}>")
|
||||||
|
|
||||||
|
cmd = self.bot.get_command(name)
|
||||||
|
|
||||||
|
if cmd:
|
||||||
|
src = cmd.callback.__code__
|
||||||
|
rpath = src.co_filename
|
||||||
|
else:
|
||||||
|
return await ctx.send(
|
||||||
|
_("Unable to find `{}`", ctx, self.bot.config).format(name)
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
lines, start_line = inspect.getsourcelines(src)
|
||||||
|
start_line -= 3 # todo: find why this -3 is necessary
|
||||||
|
except OSError:
|
||||||
|
return await ctx.send(
|
||||||
|
_(
|
||||||
|
"Unable to fetch lines for `{}`", ctx, self.bot.config
|
||||||
|
).format(name)
|
||||||
|
)
|
||||||
|
|
||||||
|
location = (
|
||||||
|
os.path.relpath(rpath)
|
||||||
|
.replace("\\", "/")
|
||||||
|
.split("site-packages/")[1]
|
||||||
|
)
|
||||||
|
|
||||||
|
final_url = (
|
||||||
|
f"<{base_url}/tree/master/{location}#L{start_line}"
|
||||||
|
f"-L{start_line + len(lines) - 1}>"
|
||||||
|
)
|
||||||
|
await ctx.send(final_url)
|
||||||
|
|
Loading…
Reference in a new issue