Make --debuginfo more like [p]debuginfo (#5662)

This commit is contained in:
jack1142
2022-04-09 19:34:12 +02:00
committed by GitHub
parent bc9f34c04b
commit c9f1a45854
3 changed files with 189 additions and 141 deletions

View File

@@ -4091,106 +4091,9 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
@checks.is_owner()
async def debuginfo(self, ctx: commands.Context):
"""Shows debug information useful for debugging."""
from redbot.core._debuginfo import DebugInfo
if sys.platform == "linux":
import distro # pylint: disable=import-error
IS_WINDOWS = os.name == "nt"
IS_MAC = sys.platform == "darwin"
IS_LINUX = sys.platform == "linux"
python_version = ".".join(map(str, sys.version_info[:3]))
pyver = f"{python_version} ({platform.architecture()[0]})"
pipver = pip.__version__
redver = red_version_info
dpy_version = discord.__version__
if IS_WINDOWS:
os_info = platform.uname()
osver = f"{os_info.system} {os_info.release} (version {os_info.version})"
elif IS_MAC:
os_info = platform.mac_ver()
osver = f"Mac OSX {os_info[0]} {os_info[2]}"
elif IS_LINUX:
osver = f"{distro.name()} {distro.version()}".strip()
else:
osver = "Could not parse OS, report this on Github."
user_who_ran = getpass.getuser()
driver = storage_type()
from redbot.core.data_manager import basic_config, config_file
data_path = Path(basic_config["DATA_PATH"])
disabled_intents = (
", ".join(
intent_name.replace("_", " ").title()
for intent_name, enabled in self.bot.intents
if not enabled
)
or "None"
)
def _datasize(num: int):
for unit in ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB"]:
if abs(num) < 1024.0:
return "{0:.1f}{1}".format(num, unit)
num /= 1024.0
return "{0:.1f}{1}".format(num, "YB")
memory_ram = psutil.virtual_memory()
ram_string = "{used}/{total} ({percent}%)".format(
used=_datasize(memory_ram.used),
total=_datasize(memory_ram.total),
percent=memory_ram.percent,
)
owners = []
for uid in self.bot.owner_ids:
try:
u = await self.bot.get_or_fetch_user(uid)
owners.append(f"{u.id} ({u})")
except discord.HTTPException:
owners.append(f"{uid} (Unresolvable)")
owners_string = ", ".join(owners) or "None"
resp_intro = "# Debug Info for Red:"
resp_system_intro = "## System Metadata:"
resp_system = (
f"CPU Cores: {psutil.cpu_count()} ({platform.machine()})\nRAM: {ram_string}\n"
)
resp_os_intro = "## OS Variables:"
resp_os = f"OS version: {osver}\nUser: {user_who_ran}\n" # Ran where off to?!
resp_py_metadata = (
f"Python executable: {sys.executable}\n"
f"Python version: {pyver}\n"
f"Pip version: {pipver}\n"
)
resp_red_metadata = f"Red version: {redver}\nDiscord.py version: {dpy_version}\n"
resp_red_vars_intro = "## Red variables:"
resp_red_vars = (
f"Instance name: {data_manager.instance_name}\n"
f"Owner(s): {owners_string}\n"
f"Storage type: {driver}\n"
f"Disabled intents: {disabled_intents}\n"
f"Data path: {data_path}\n"
f"Metadata file: {config_file}"
)
response = (
box(resp_intro, lang="md"),
"\n",
box(resp_system_intro, lang="md"),
box(resp_system),
"\n",
box(resp_os_intro, lang="md"),
box(resp_os),
box(resp_py_metadata),
box(resp_red_metadata),
"\n",
box(resp_red_vars_intro, lang="md"),
box(resp_red_vars),
)
await ctx.send("".join(response))
await ctx.send(await DebugInfo(self.bot).get_text())
# You may ask why this command is owner-only,
# cause after all it could be quite useful to guild owners!