Settings.py

← Back to explorer
Cogs/Settings.py
import discord, time, pathlib, json
from platform import python_version
from discord.ext import commands
from discord import app_commands
from datetime import timedelta
from psutil import Process, virtual_memory
from customs.log import AuroraLogger
from customs.customs import get_uptime

# LOGGER
error_logger = AuroraLogger("AuroraErrorLog", "logs/errors.log")


class Settings(commands.Cog):
    def __init__(self, client):
        self.client = client

    @app_commands.command(name="about", description="Shows information about the bot.")
    async def _bot_information(self, interaction: discord.Interaction):
        try:
            embed = discord.Embed(title="About Me", colour=discord.Colour.dark_magenta(),
                                  timestamp=interaction.created_at)
            embed.set_thumbnail(
                url="https://cdn.discordapp.com/attachments/910897237037555774/911829151588167700/about_me.jpg")
            embed.set_footer(text="The oldest known record of an aurora date back to 2600 BC",
                             icon_url=interaction.user.display_avatar)
            proc = Process()
            with proc.oneshot():
                uptime = timedelta(seconds=time.time() - proc.create_time())
                cpu_time = timedelta(seconds=(cpu := proc.cpu_times()).system + cpu.user)
                mem_total = virtual_memory().total / (1024 ** 2)
                mem_of_total = proc.memory_percent()
                mem_usage = mem_total * (mem_of_total / 100)
                p = pathlib.Path('./')
                cm = cr = fn = cl = ls = fc = 0
                for f in p.rglob('*.py'):
                    if str(f).startswith("venv"):
                        continue
                    fc += 1
                    with f.open(encoding='utf8') as of:
                        for l in of.readlines():
                            l = l.strip()
                            if l.startswith('class'):
                                cl += 1
                            if l.startswith('def'):
                                fn += 1
                            if l.startswith('async def'):
                                cr += 1
                            if '#' in l:
                                cm += 1
                            ls += 1

            embed.add_field(name="<:python:911833219056402504> Python version", value=python_version(), inline=True)
            embed.add_field(name="<:dpy:911833820028883014> discord.py version", value=discord.__version__, inline=True)
            embed.add_field(name="<a:mcclock:995517509430161498> Uptime", value=f"<t:{int(get_uptime().timestamp())}:R>",
                            inline=True)
            embed.add_field(name="<:ram:911834876020408381> Memory usage",
                            value=f"{mem_usage:,.3f} / {mem_total:,.0f} MiB ({mem_of_total:.0f}%)", inline=True)
            embed.add_field(name="<:servers:957628143785619496> Guilds",
                            value=f"{len(list(self.client.guilds))}", inline=True)
            embed.add_field(name="📝 Lines Of Code", value=f"{ls:,}", inline=True)
            embed.add_field(name="📂 Files", value=fc, inline=True)
            embed.add_field(name="<:pythonsus:911840562510975036> Functions", value=fn, inline=True)
            embed.add_field(name="<:pythonsus:911840562510975036> Comments", value=f"{cm:,}", inline=True)
            embed.add_field(name="<:developer:911835252324986980> Developer", value="AalbatrossGuy#5129", inline=True)
            embed.add_field(name="<:tester:911835692945010720> Official Tester",
                            value="Your Friendly Cat Neighbor#3521", inline=True)
            embed.add_field(name='<:pc:911836792603414528> Hosted By', value="4ngel🍁#2769", inline=True)

            buttons = discord.ui.View()
            with open("config.json", mode="r") as file:
                file = json.loads(file.read())
                buttons.add_item(
                    discord.ui.Button(label="Github", style=discord.ButtonStyle.url,
                                      url=file["METADATA"]["GITHUB_REPOSITORY"],
                                      emoji=self.client.get_emoji(851778689648689152))
                )
            buttons.add_item(
                discord.ui.Button(label="Developer", style=discord.ButtonStyle.url,
                                  url=file["Aurora"]["DEVELOPERS"][0]["GITHUB"],
                                  emoji=self.client.get_emoji(911835252324986980))
            )
            buttons.add_item(
                discord.ui.Button(label="Tester", style=discord.ButtonStyle.url,
                                  url=file["Aurora"]["DEVELOPERS"][1]["GITHUB"],
                                  emoji=self.client.get_emoji(911835692945010720))
            )

            await interaction.response.send_message(embed=embed, view=buttons)
        except:
            error_logger.error("An error occurred while running about command:- ", exc_info=True)


async def setup(client):
    await client.add_cog(Settings(client))