async botinfo (v2.2.4)

Bot info now executes asynchronously
This commit is contained in:
GaMeNu 2023-11-17 14:56:32 +02:00
parent 28181622da
commit fbd7c47a95

View File

@ -2,6 +2,7 @@ import datetime
import platform import platform
import re import re
import sys import sys
import time
import distro import distro
import psutil import psutil
@ -532,31 +533,31 @@ class Notificator(commands.Cog):
@app_commands.command(name='info', description='Get client and system info') @app_commands.command(name='info', description='Get client and system info')
async def botinfo(self, intr: discord.Interaction): async def botinfo(self, intr: discord.Interaction):
await intr.response.defer()
# Apparently this is a fairly massive command
# I am trying to prevent major slowdowns by creating a new task
# This is futile
asyncio.create_task(self.execute_bot_info(intr))
async def execute_bot_info(self, intr):
def format_timedelta(timedelta: datetime.timedelta): def format_timedelta(timedelta: datetime.timedelta):
return f'{timedelta.days} days, {((timedelta.seconds // 3600) % 24)}:{((timedelta.seconds // 60) % 60)}:{(timedelta.seconds % 60)}' return f'{timedelta.days} days, {((timedelta.seconds // 3600) % 24)}:{((timedelta.seconds // 60) % 60)}:{(timedelta.seconds % 60)}'
curtime = time.time() curtime = time.time()
client_uptime = datetime.timedelta(seconds=int(round(curtime - self.start_time))) client_uptime = datetime.timedelta(seconds=int(round(curtime - self.start_time)))
client_uptime_format = format_timedelta(client_uptime) client_uptime_format = format_timedelta(client_uptime)
system_uptime = datetime.timedelta(seconds=int(round(curtime - psutil.boot_time()))) system_uptime = datetime.timedelta(seconds=int(round(curtime - psutil.boot_time())))
system_uptime_format = format_timedelta(system_uptime) system_uptime_format = format_timedelta(system_uptime)
uname = platform.uname() uname = platform.uname()
if uname.system != "Linux": if uname.system != "Linux":
system_name = f'{uname.system} {uname.release}' system_name = f'{uname.system} {uname.release}'
else: else:
# Goddamnit Linux too many distros # Goddamnit Linux too many distros
system_name = f'{distro.name(pretty=True)}' system_name = f'{distro.name()} {distro.version_parts()[0]}.{distro.version_parts()[1]} ({distro.codename()})'
b_to_mb = 1000000 b_to_mb = 1000000
e = discord.Embed(color=discord.Color.orange()) e = discord.Embed(color=discord.Color.orange())
e.title = 'Home Front Command Notificator' e.title = 'Home Front Command Notificator'
e.description = 'Info about this bot instance' e.description = 'Info about this bot instance'
e.add_field(name='', value=f'''```asciidoc e.add_field(name='', value=f'''```asciidoc
==== Instance and Client Information ==== ==== Instance and Client Information ====
Bot Version :: {botinfo.version} Bot Version :: {botinfo.version}
@ -570,12 +571,13 @@ Registered channels :: {len(self.db.get_all_channels())}
OS :: {system_name} OS :: {system_name}
System Uptime :: {system_uptime_format} System Uptime :: {system_uptime_format}
Processor :: {cpuinfo.get_cpu_info()["brand_raw"]} CPU :: {cpuinfo.get_cpu_info()["brand_raw"]}
Proc.Usage :: {psutil.cpu_percent()}% CPU Usage :: {psutil.cpu_percent()}%
Cores :: {psutil.cpu_count(logical=False)} ({psutil.cpu_count(logical=True)} Threads)
RAM Usage :: {(psutil.virtual_memory().used / b_to_mb):.2f} MB / {(psutil.virtual_memory().total / b_to_mb):.2f} MB ({psutil.virtual_memory().percent}%) RAM Usage :: {(psutil.virtual_memory().used / b_to_mb):.2f} MB / {(psutil.virtual_memory().total / b_to_mb):.2f} MB ({psutil.virtual_memory().percent}%)
```''', inline=False) ```''', inline=False)
await intr.response.send_message(embed=e) await intr.followup.send(embed=e)
@app_commands.command(name='about', description='About the bot') @app_commands.command(name='about', description='About the bot')
async def about_bot(self, intr: discord.Interaction): async def about_bot(self, intr: discord.Interaction):