From cd745d35c2ad7996a46dca778542e1e29f8d2846 Mon Sep 17 00:00:00 2001 From: Stonedestroyer <1307729+Stonedestroyer@users.noreply.github.com> Date: Fri, 24 May 2019 23:55:48 +0200 Subject: [PATCH] [Core] Add debug info command (#2728) Shows useful debug information for debugging. --- redbot/core/core_commands.py | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/redbot/core/core_commands.py b/redbot/core/core_commands.py index 6adc88b74..6c4869625 100644 --- a/redbot/core/core_commands.py +++ b/redbot/core/core_commands.py @@ -8,6 +8,9 @@ import logging import os import pathlib import sys +import platform +import getpass +import pip import tarfile import traceback from collections import namedtuple @@ -1467,6 +1470,59 @@ class Core(commands.Cog, CoreLogic): msg = _("Data path: {path}").format(path=data_dir) await ctx.send(box(msg)) + @commands.command(hidden=True) + @checks.is_owner() + async def debuginfo(self, ctx: commands.Context): + """Shows debug information useful for debugging..""" + + if sys.platform == "linux": + import distro + + IS_WINDOWS = os.name == "nt" + IS_MAC = sys.platform == "darwin" + IS_LINUX = sys.platform == "linux" + + pyver = "{}.{}.{} ({})".format(*sys.version_info[:3], platform.architecture()[0]) + pipver = pip.__version__ + redver = red_version_info + dpy_version = discord.__version__ + if IS_WINDOWS: + os_info = platform.uname() + osver = "{} {} (version {})".format(os_info.system, os_info.release, os_info.version) + elif IS_MAC: + os_info = platform.mac_ver() + osver = "Mac OSX {} {}".format(os_info[0], os_info[2]) + elif IS_LINUX: + os_info = distro.linux_distribution() + osver = "{} {}".format(os_info[0], os_info[1]).strip() + else: + osver = "Could not parse OS, report this on Github." + user_who_ran = getpass.getuser() + + if await ctx.embed_requested(): + e = discord.Embed(color=await ctx.embed_colour()) + e.title = "Debug Info for Red" + e.add_field(name="Red version", value=redver, inline=True) + e.add_field(name="Python version", value=pyver, inline=True) + e.add_field(name="Discord.py version", value=dpy_version, inline=True) + e.add_field(name="Pip version", value=pipver, inline=True) + e.add_field(name="System arch", value=platform.machine(), inline=True) + e.add_field(name="User", value=user_who_ran, inline=True) + e.add_field(name="OS version", value=osver, inline=False) + await ctx.send(embed=e) + else: + info = ( + "Debug Info for Red\n\n" + + "Red version: {}\n".format(redver) + + "Python version: {}\n".format(pyver) + + "Discord.py version: {}\n".format(dpy_version) + + "Pip version: {}\n".format(pipver) + + "System arch: {}\n".format(platform.machine()) + + "User: {}\n".format(user_who_ran) + + "OS version: {}\n".format(osver) + ) + await ctx.send(box(info)) + @commands.group() @checks.is_owner() async def whitelist(self, ctx: commands.Context):