105 lines
2.5 KiB
Python
105 lines
2.5 KiB
Python
import os
|
|
import threading
|
|
import time
|
|
|
|
import disnake
|
|
import psutil
|
|
|
|
import arguments
|
|
import commands
|
|
import utils
|
|
from constants import EMBED_COLOR
|
|
from state import client, start_time
|
|
|
|
|
|
async def status(message):
|
|
member_count = 0
|
|
channel_count = 0
|
|
for guild in client.guilds:
|
|
member_count += len(guild.members)
|
|
channel_count += len(guild.channels)
|
|
process = psutil.Process(os.getpid())
|
|
memory_usage = process.memory_info().rss / 1048576
|
|
|
|
embed = disnake.Embed(color=EMBED_COLOR)
|
|
embed.add_field(
|
|
name="Latency",
|
|
value=f"```{round(client.latency * 1000, 1)} ms```",
|
|
)
|
|
embed.add_field(
|
|
name="RSS",
|
|
value=f"```{round(memory_usage, 1)} MiB```",
|
|
)
|
|
embed.add_field(
|
|
name="Threads",
|
|
value=f"```{threading.active_count()}```",
|
|
)
|
|
embed.add_field(
|
|
name="Guilds",
|
|
value=f"```{len(client.guilds)}```",
|
|
)
|
|
embed.add_field(
|
|
name="Members",
|
|
value=f"```{member_count}```",
|
|
)
|
|
embed.add_field(
|
|
name="Channels",
|
|
value=f"```{channel_count}```",
|
|
)
|
|
embed.add_field(
|
|
name="Commands",
|
|
value=f"```{len(commands.Command.__members__)}```",
|
|
)
|
|
embed.add_field(
|
|
name="Disnake",
|
|
value=f"```{disnake.__version__}```",
|
|
)
|
|
embed.add_field(
|
|
name="Uptime",
|
|
value=f"```{utils.format_duration(int(time.time() - start_time), short=True)}```",
|
|
)
|
|
await utils.reply(message, embed=embed)
|
|
|
|
|
|
async def uptime(message):
|
|
tokens = commands.tokenize(message.content)
|
|
parser = arguments.ArgumentParser(
|
|
tokens[0],
|
|
"print bot uptime",
|
|
)
|
|
parser.add_argument(
|
|
"-s",
|
|
"--since",
|
|
action="store_true",
|
|
help="bot up since",
|
|
)
|
|
if not (args := await parser.parse_args(message, tokens)):
|
|
return
|
|
|
|
if args.since:
|
|
await utils.reply(message, f"{round(start_time)}")
|
|
else:
|
|
await utils.reply(
|
|
message, f"up {utils.format_duration(int(time.time() - start_time))}"
|
|
)
|
|
|
|
|
|
async def ping(message):
|
|
await utils.reply(
|
|
message,
|
|
embed=disnake.Embed(
|
|
title="Pong :ping_pong:",
|
|
description=f"Latency: **{round(client.latency * 1000, 1)} ms**",
|
|
color=EMBED_COLOR,
|
|
),
|
|
)
|
|
|
|
|
|
async def help(message):
|
|
await utils.reply(
|
|
message,
|
|
", ".join(
|
|
[f"`{command.value}`" for command in commands.Command.__members__.values()]
|
|
),
|
|
)
|