mirror of
https://github.com/TotalFreedomMC/TotalFreedomBot.git
synced 2024-12-22 15:44:57 +00:00
Added tf!lag command
This commit is contained in:
parent
30ad48d1ee
commit
a4fc6a449b
1 changed files with 97 additions and 12 deletions
|
@ -1,5 +1,6 @@
|
||||||
import discord
|
import discord
|
||||||
import requests
|
import requests
|
||||||
|
import re
|
||||||
|
|
||||||
from checks import *
|
from checks import *
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
|
@ -11,7 +12,16 @@ from unicode import *
|
||||||
class ServerCommands(commands.Cog):
|
class ServerCommands(commands.Cog):
|
||||||
def __init__(self, bot):
|
def __init__(self, bot):
|
||||||
self.bot = bot
|
self.bot = bot
|
||||||
|
|
||||||
|
def get_server_status(self):
|
||||||
|
try:
|
||||||
|
requests.get(
|
||||||
|
"http://play.totalfreedom.me:28966/list?json=true", timeout=5).json()
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
@is_liaison()
|
@is_liaison()
|
||||||
async def eventhost(self, ctx, user: discord.Member):
|
async def eventhost(self, ctx, user: discord.Member):
|
||||||
|
@ -206,18 +216,15 @@ class ServerCommands(commands.Cog):
|
||||||
async def state(self, ctx):
|
async def state(self, ctx):
|
||||||
'Gets the current status of the Server'
|
'Gets the current status of the Server'
|
||||||
em = discord.Embed()
|
em = discord.Embed()
|
||||||
try:
|
if self.get_server_status():
|
||||||
requests.get(
|
em.description = 'Server is online'
|
||||||
"http://play.totalfreedom.me:28966/list?json=true", timeout=5).json()
|
em.colour = 0x00FF00
|
||||||
except:
|
else:
|
||||||
em.description = 'Server is offline'
|
em.description = 'Server is offline'
|
||||||
em.colour = 0xFF0000
|
em.colour = 0xFF0000
|
||||||
else:
|
|
||||||
em.description = 'Server is online'
|
|
||||||
em.colour = 0x00FF00
|
|
||||||
await ctx.send(embed=em)
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
@commands.command(name='list')
|
@commands.command(name='list', aliases=['l','who','lsit'])
|
||||||
async def online(self, ctx):
|
async def online(self, ctx):
|
||||||
'Gives a list of online players.'
|
'Gives a list of online players.'
|
||||||
em = discord.Embed()
|
em = discord.Embed()
|
||||||
|
@ -229,14 +236,42 @@ class ServerCommands(commands.Cog):
|
||||||
em.description = "There are no online players"
|
em.description = "There are no online players"
|
||||||
else:
|
else:
|
||||||
em.description = f"There are {json['online']} / {json['max']} online players"
|
em.description = f"There are {json['online']} / {json['max']} online players"
|
||||||
ranks = list(json.keys())
|
|
||||||
|
owners = json["owners"]
|
||||||
|
if len(owners) != 0:
|
||||||
|
em = format_list_entry(em, owners, "Server Owners")
|
||||||
|
executives = json["executives"]
|
||||||
|
if len(executives) != 0:
|
||||||
|
em = format_list_entry(em, executives, "Executives")
|
||||||
|
developers = json["developers"]
|
||||||
|
if len(developers) != 0:
|
||||||
|
em = format_list_entry(em, developers, "Developers")
|
||||||
|
senior_admins = json["senioradmins"]
|
||||||
|
if len(senior_admins) != 0:
|
||||||
|
em = format_list_entry(em, senior_admins, "Senior Admins")
|
||||||
|
admins = json["admins"]
|
||||||
|
if len(admins) != 0:
|
||||||
|
em = format_list_entry(em, admins, "Admins")
|
||||||
|
#trialadmins = json["trialadmins"]
|
||||||
|
#if len(trialadmins) != 0:
|
||||||
|
#em = format_list_entry(em, trialmods, "Trial Mods")
|
||||||
|
masterbuilders = json["masterbuilders"]
|
||||||
|
if len(masterbuilders) != 0:
|
||||||
|
em = format_list_entry(em, masterbuilders, "Master Builders")
|
||||||
|
operators = json["operators"]
|
||||||
|
if len(operators) != 0:
|
||||||
|
em = format_list_entry(em, operators, "Operators")
|
||||||
|
imposters = json["imposters"]
|
||||||
|
if len(imposters) != 0:
|
||||||
|
em = format_list_entry(em, imposters, "Imposters")
|
||||||
|
'''ranks = list(json.keys())
|
||||||
for rank in ranks:
|
for rank in ranks:
|
||||||
if rank not in ['max', 'online'] and json[rank]:
|
if rank not in ['max', 'online'] and json[rank]:
|
||||||
rank = rank.split('_')
|
rank = rank.split('_')
|
||||||
for word in range(len(rank)):
|
for word in range(len(rank)):
|
||||||
rank[word] = rank[word].capitalize()
|
rank[word] = rank[word].capitalize()
|
||||||
em = format_list_entry(
|
em = format_list_entry(
|
||||||
em, json[rank], f'{" ".join(rank)}')
|
em, json[rank], f'{" ".join(rank)}')'''
|
||||||
|
|
||||||
except:
|
except:
|
||||||
em.description = 'Server is offline'
|
em.description = 'Server is offline'
|
||||||
|
@ -269,7 +304,57 @@ class ServerCommands(commands.Cog):
|
||||||
await archived_reports_channel.send("Message archived because it is older than 24 hours", embed=embed)
|
await archived_reports_channel.send("Message archived because it is older than 24 hours", embed=embed)
|
||||||
count += 1
|
count += 1
|
||||||
await ctx.send("Archived **{}** reports that are older than 24 hours".format(count))
|
await ctx.send("Archived **{}** reports that are older than 24 hours".format(count))
|
||||||
|
|
||||||
|
@commands.command(aliases=['lag', 'gc'])
|
||||||
|
async def tps(self, ctx):
|
||||||
|
"""Lag information regarding the server"""
|
||||||
|
em = discord.Embed()
|
||||||
|
em.title = 'Server lag information'
|
||||||
|
if self.get_server_status():
|
||||||
|
self.bot.telnet_object.session.write(
|
||||||
|
bytes('lag', 'ascii') + b"\r\n")
|
||||||
|
self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'Uptime:', 'ascii'), 2)
|
||||||
|
server_uptime = self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'Current TPS =', 'ascii'), 2).decode('utf-8')
|
||||||
|
server_tps = self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'Maximum memory: ', 'ascii'), 2).decode('utf-8')
|
||||||
|
maximum_memory = self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'Allocated memory:', 'ascii'), 2).decode('utf-8')
|
||||||
|
allocated_memory = self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'Free memory:', 'ascii'), 2).decode('utf-8')
|
||||||
|
free_memory = self.bot.telnet_object.session.read_until(
|
||||||
|
bytes(f'World "world":', 'ascii'), 2).decode('utf-8')
|
||||||
|
|
||||||
|
server_uptime = server_uptime.strip(':Current TPS =')
|
||||||
|
server_tps = server_tps.strip(':Maximum memory:')
|
||||||
|
maximum_memory = maximum_memory.strip(':Allocated memory:')
|
||||||
|
allocated_memory = allocated_memory.strip(':Free memory:')
|
||||||
|
free_memory = free_memory.strip(':World "world":')
|
||||||
|
|
||||||
|
time_sent = str(datetime.utcnow().replace(microsecond=0))[11:]
|
||||||
|
|
||||||
|
print(f'TPS: {server_tps}, UPTIME: {server_uptime}')
|
||||||
|
|
||||||
|
try:
|
||||||
|
server_uptime = re.match('[0-9]?[0-9] minutes [0-6]?[0-9] seconds', server_uptime)[0]
|
||||||
|
server_tps = re.match('[0-2][0-9].?[0-9]?[0-9]?', server_tps)[0]
|
||||||
|
maximum_memory = re.match('[0-9],?[0-9][0-9][0-9]? MB', maximum_memory)[0]
|
||||||
|
allocated_memory = re.match('[0-9],?[0-9][0-9][0-9]? MB', allocated_memory)[0]
|
||||||
|
free_memory = re.match('[0-9],?[0-9][0-9][0-9]? MB', free_memory)[0]
|
||||||
|
except Exception as e:
|
||||||
|
em.description = f'Something went wrong: {e}'
|
||||||
|
em.colour = 0xFF0000
|
||||||
|
else:
|
||||||
|
em.add_field(name='TPS', value = server_tps, inline=False)
|
||||||
|
em.add_field(name='Uptime', value = server_uptime, inline=False)
|
||||||
|
em.add_field(name='Maximum Memory', value = maximum_memory, inline=False)
|
||||||
|
em.add_field(name='Allocated Memory', value = allocated_memory, inline=False)
|
||||||
|
em.add_field(name='Free Memory', value = free_memory, inline=False)
|
||||||
|
else:
|
||||||
|
em.description = 'Server is offline'
|
||||||
|
await ctx.send(embed=em)
|
||||||
|
|
||||||
@commands.command()
|
@commands.command()
|
||||||
@is_mod_or_has_perms()
|
@is_mod_or_has_perms()
|
||||||
async def fixreports(self, ctx):
|
async def fixreports(self, ctx):
|
||||||
|
|
Loading…
Reference in a new issue