Update stats - split into command group
This commit is contained in:
parent
082ca714a1
commit
fcbfe46070
@ -2,7 +2,6 @@ from discord.ext import commands, tasks
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import discord
|
import discord
|
||||||
import os
|
import os
|
||||||
import lavalink
|
|
||||||
|
|
||||||
from utils.config import BOT_COLOR, LOG
|
from utils.config import BOT_COLOR, LOG
|
||||||
|
|
||||||
@ -30,6 +29,16 @@ class Stats(commands.Cog):
|
|||||||
|
|
||||||
self.dump_count.start()
|
self.dump_count.start()
|
||||||
|
|
||||||
|
def millis_to_readable(self, ms):
|
||||||
|
hours = ms // 3600000
|
||||||
|
ms %= 3600000
|
||||||
|
minutes = ms // 60000
|
||||||
|
ms %= 60000
|
||||||
|
seconds = ms // 1000
|
||||||
|
milliseconds = ms % 1000
|
||||||
|
|
||||||
|
return f"{hours:02}:{minutes:02}:{seconds:02}.{milliseconds:03}"
|
||||||
|
|
||||||
@tasks.loop(seconds=30)
|
@tasks.loop(seconds=30)
|
||||||
async def dump_count(self):
|
async def dump_count(self):
|
||||||
connection = sqlite3.connect("data/count.db")
|
connection = sqlite3.connect("data/count.db")
|
||||||
@ -59,10 +68,19 @@ class Stats(commands.Cog):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
self.bot.temp_command_count[interaction.command.name] = 1
|
self.bot.temp_command_count[interaction.command.name] = 1
|
||||||
|
|
||||||
@commands.command()
|
@commands.group(invoke_without_command=True)
|
||||||
@commands.dm_only()
|
@commands.dm_only()
|
||||||
@commands.is_owner()
|
@commands.is_owner()
|
||||||
async def stats(self, ctx: commands.Context):
|
async def stats(self, ctx: commands.Context):
|
||||||
|
await ctx.author.send(
|
||||||
|
f"This is a group command. Use `{self.bot.command_prefix}stats"
|
||||||
|
" bot/lavalink` to get specific statistics."
|
||||||
|
)
|
||||||
|
|
||||||
|
@stats.command()
|
||||||
|
@commands.dm_only()
|
||||||
|
@commands.is_owner()
|
||||||
|
async def bot(self, ctx: commands.Context):
|
||||||
connection = sqlite3.connect("data/count.db")
|
connection = sqlite3.connect("data/count.db")
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
|
|
||||||
@ -85,20 +103,6 @@ class Stats(commands.Cog):
|
|||||||
color=BOT_COLOR,
|
color=BOT_COLOR,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Determine the content of the Lavalink description
|
|
||||||
if self.bot.lavalink:
|
|
||||||
embed.description += (
|
|
||||||
"Total Players:"
|
|
||||||
f" `{len(self.bot.lavalink.get_players())}`\n"
|
|
||||||
"Load:"
|
|
||||||
f" `{round(self.bot.lavalink.nodes[0].stats.lavalink_load * 100, 2)}%`"
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
embed.description += (
|
|
||||||
"Total Players: `NO LAVALINK CONNECTION`\n"
|
|
||||||
"Load: `NO LAVALINK CONNECTION`"
|
|
||||||
)
|
|
||||||
|
|
||||||
for entry in data:
|
for entry in data:
|
||||||
embed.add_field(
|
embed.add_field(
|
||||||
name=entry[0], value=f"` {entry[1]:,} `", inline=True
|
name=entry[0], value=f"` {entry[1]:,} `", inline=True
|
||||||
@ -107,8 +111,37 @@ class Stats(commands.Cog):
|
|||||||
connection.close()
|
connection.close()
|
||||||
await ctx.send(embed=embed)
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
@stats.error
|
@bot.error
|
||||||
async def stats_error(self, ctx, error):
|
async def bot_error(self, ctx, error):
|
||||||
|
return
|
||||||
|
|
||||||
|
@stats.command()
|
||||||
|
@commands.dm_only()
|
||||||
|
@commands.is_owner()
|
||||||
|
async def lavalink(self, ctx: commands.Context):
|
||||||
|
if not self.bot.lavalink:
|
||||||
|
return await ctx.send("No connection with Lavalink.")
|
||||||
|
|
||||||
|
embed = discord.Embed(
|
||||||
|
title="Lavalink Statistics",
|
||||||
|
color=BOT_COLOR,
|
||||||
|
)
|
||||||
|
|
||||||
|
for node in self.bot.lavalink.nodes:
|
||||||
|
embed.add_field(
|
||||||
|
name=node.name,
|
||||||
|
value=(
|
||||||
|
f"\tPlayers: `{node.stats.players}`\n\tUptime:"
|
||||||
|
f" `{self.millis_to_readable(node.stats.uptime)}`\n\tMemory"
|
||||||
|
f" Used: `{node.stats.memory_used / 1024 / 1024:.2f}MB`\n"
|
||||||
|
),
|
||||||
|
inline=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
await ctx.send(embed=embed)
|
||||||
|
|
||||||
|
@lavalink.error
|
||||||
|
async def lavalink_error(self, ctx, error):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user