Update server_commands.py

This commit is contained in:
Elmon11 2021-03-30 00:56:38 +02:00 committed by GitHub
parent 1b5a643e74
commit c6cc6a7679
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,7 +5,7 @@ import discord
import requests import requests
from discord.ext import commands from discord.ext import commands
from checks import is_liaison, is_staff, is_senior, is_creative_designer, is_mod_or_has_perms, NoPermission from checks import is_liaison, is_staff, is_senior, is_creative_designer, is_mod_or_has_perms, NoPermission, is_dev, is_gmod_owner, is_smp_owner, notAdminCommand
from functions import hit_endpoint, get_server_status, format_list_entry, read_json from functions import hit_endpoint, get_server_status, format_list_entry, read_json
from unicode import clipboard from unicode import clipboard
@ -50,6 +50,30 @@ class ServerCommands(commands.Cog, name="Server Commands"):
await user.add_roles(master_builder_role) await user.add_roles(master_builder_role)
await ctx.send(f'```Succesfully added {master_builder_role.name} to {user.name}```') await ctx.send(f'```Succesfully added {master_builder_role.name} to {user.name}```')
@commands.command()
@is_gmod_owner()
async def gmodstaff(self, ctx, user: discord.Member):
"""Add or remove GMOD Staff role - Manager only."""
gmodstaff_role = ctx.guild.get_role(self.bot.gmodstaff_role_id)
if gmodstaff_role in user.roles:
await user.remove_roles(gmodstaff_role)
await ctx.send(f'```Succesfully took {gmodstaff_role.name} from {user.name}```')
else:
await user.add_roles(gmodstaff_role)
await ctx.send(f'```Succesfully added {gmodstaff_role.name} to {user.name}```')
@commands.command()
@is_smp_owner()
async def smpstaff(self, ctx, user: discord.Member):
"""Add or remove SMP Staff role - Manager only."""
smpstaff_role = ctx.guild.get_role(self.bot.smpstaff_role_id)
if smpstaff_role in user.roles:
await user.remove_roles(smpstaff_role)
await ctx.send(f'```Succesfully took {smpstaff_role.name} from {user.name}```')
else:
await user.add_roles(smpstaff_role)
await ctx.send(f'```Succesfully added {smpstaff_role.name} to {user.name}```')
@commands.command() @commands.command()
@is_staff() @is_staff()
async def serverban(self, ctx, user: discord.Member): async def serverban(self, ctx, user: discord.Member):
@ -76,18 +100,18 @@ class ServerCommands(commands.Cog, name="Server Commands"):
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = 'Something went wrong' em.description = 'Something went wrong'
print(f'Error while starting server: {e}') print(f'Error while starting freedom-0{server}: {e}')
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
if 'error' in attempt.lower(): if 'error' in attempt.lower():
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command() @commands.command()
@ -95,7 +119,15 @@ class ServerCommands(commands.Cog, name="Server Commands"):
"""Returns the uptime of the VPS.""" """Returns the uptime of the VPS."""
em = discord.Embed() em = discord.Embed()
em.title = 'VPS Uptime Information' em.title = 'VPS Uptime Information'
em.description = hit_endpoint('uptime') try:
attempt = hit_endpoint('uptime')
except Exception as e:
em.title = 'Command error'
em.colour = 0xFF0000
print(f'Error while starting freedom-0{server}: {e}')
em.description = f'Something went wrong'
else:
em.description = attempt
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command() @commands.command()
@ -107,23 +139,30 @@ class ServerCommands(commands.Cog, name="Server Commands"):
if ctx.channel.id == 793632795598913546: if ctx.channel.id == 793632795598913546:
server = 2 server = 2
try: try:
attempt = hit_endpoint('stop', server) tempem = discord.Embed()
tempem.title = "Command sending"
tempem.description = "Please stand by this could take a minute"
tempem.colour = 0xFFFF00
tempm = await ctx.send(embed = tempem)
attempt = hit_endpoint('stop', server, timeout=30)
except Exception as e: except Exception as e:
await tempm.delete()
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = 'Something went wrong' em.description = 'Something went wrong'
print(f'Error while stopping server: {e}') print(f'Error while stopping freedom-0{server}: {e}')
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
await tempm.delete()
if 'error' in attempt.lower(): if 'error' in attempt.lower():
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command(aliases=['adminconsole', 'ac']) @commands.command(aliases=['adminconsole', 'ac'])
@ -139,17 +178,17 @@ class ServerCommands(commands.Cog, name="Server Commands"):
command += f'{arg} ' command += f'{arg} '
try: try:
if args[0] in ['mute', 'stfu', 'gtfo', 'ban', 'unban', 'unmute', 'smite', 'noob', 'tban', 'tempban', 'warn', if args[0] in ['mute', 'stfu', 'gtfo', 'ban', 'unban', 'unmute', 'smite', 'noob', 'tban', 'tempban', 'warn',
'mv', 'kick', 'cc', 'say']: 'mv', 'kick', 'cc', 'say', 'autoclear', 'autotp', 'toggle']:
self.write_telnet_session(server, self.write_telnet_session(server,
bytes(command, 'ascii') + b"\r\n") bytes(command, 'ascii') + b"\r\n")
elif args[0] == 'saconfig': elif args[0] == 'saconfig':
if args[1] not in ['add', 'remove']: if args[1] not in ['add', 'remove']:
raise NoPermission(['IS_SENIOR_ADMIN']) raise NoPermission(['SACONFIG_EDIT_FROM_ADMIN_CONSOLE'])
else: else:
self.write_telnet_session(server, self.write_telnet_session(server,
bytes(command, 'ascii') + b"\r\n") bytes(command, 'ascii') + b"\r\n")
else: else:
raise NoPermission(['IS_SENIOR_ADMIN']) raise notAdminCommand()
except Exception as e: except Exception as e:
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
@ -158,7 +197,7 @@ class ServerCommands(commands.Cog, name="Server Commands"):
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = 'Command sent.' em.description = f'Command sent to freedom-0{server}.'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command() @commands.command()
@ -181,12 +220,12 @@ class ServerCommands(commands.Cog, name="Server Commands"):
if 'error' in attempt.lower(): if 'error' in attempt.lower():
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = f'{attempt}' em.description = f'freedom-0{server}: {attempt}'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command() @commands.command()
@ -204,12 +243,12 @@ class ServerCommands(commands.Cog, name="Server Commands"):
em.title = 'Command error' em.title = 'Command error'
em.colour = 0xFF0000 em.colour = 0xFF0000
em.description = 'Something went wrong' em.description = 'Something went wrong'
print(f'Error while restarting server: {e}') print(f'Error while restarting freedom-0{server}: {e}')
await ctx.send(embed=em) await ctx.send(embed=em)
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = 'Server restarting.' em.description = f'freedom-0{server} restarting.'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command() @commands.command()
@ -231,7 +270,7 @@ class ServerCommands(commands.Cog, name="Server Commands"):
else: else:
em.title = 'Success' em.title = 'Success'
em.colour = 0x00FF00 em.colour = 0x00FF00
em.description = 'Command sent.' em.description = f'Command sent to freedom-0{server}.'
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command(aliases=['status']) @commands.command(aliases=['status'])
@ -242,24 +281,28 @@ class ServerCommands(commands.Cog, name="Server Commands"):
if ctx.channel.id == 793632795598913546: if ctx.channel.id == 793632795598913546:
server = 2 server = 2
if get_server_status(server): if get_server_status(server):
em.description = 'Server is online' em.description = f'freedom-0{server} is online'
em.colour = 0x00FF00 em.colour = 0x00FF00
else: else:
em.description = 'Server is offline' em.description = f'freedom-0{server} is offline'
em.colour = 0xFF0000 em.colour = 0xFF0000
await ctx.send(embed=em) await ctx.send(embed=em)
@commands.command(name='list', aliases=['l', 'who', 'lsit']) @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."""
if ctx.channel.id == self.bot.gmod_server_chat:
return
em = discord.Embed() em = discord.Embed()
em.title = "Player List"
config_file = read_json('config') config_file = read_json('config')
if ctx.channel.id == 793632795598913546: if ctx.channel.id == 793632795598913546:
ip = config_file['SERVER_IP_2'] ip = config_file['SERVER_IP_2']
server = 2
else: else:
ip = config_file['SERVER_IP'] ip = config_file['SERVER_IP']
server = 1
port = config_file['PLAYERLIST_PORT'] port = config_file['PLAYERLIST_PORT']
em.title = f"Player List - freedom-0{server}"
try: try:
json = requests.get(f"http://{ip}:{port}/list?json=true", timeout=5).json() json = requests.get(f"http://{ip}:{port}/list?json=true", timeout=5).json()
if json["online"] == 0: if json["online"] == 0:
@ -383,6 +426,32 @@ class ServerCommands(commands.Cog, name="Server Commands"):
fixed += 1 fixed += 1
await ctx.send(f'Fixed **{fixed}** reports') await ctx.send(f'Fixed **{fixed}** reports')
@commands.command(aliases=['selfrestart', 'ar'], usage='tf!autorestart [on|off]')
@is_dev()
async def autorestart(self, ctx, *opt):
"""Toggle the auto-restart feature. Usage: tf!autorestart [on|off]"""
em = discord.Embed()
em.title = 'Automatic restart'
if not opt:
self.bot.auto_restart = not self.bot.auto_restart
elif opt[0].lower() in ['on', 'true']:
self.bot.auto_restart = True
elif opt[0].lower() in ['off', 'false']:
self.bot.auto_restart = False
else:
em.description = 'Invalid arguements'
em.colour = 0xFF0000
await ctx.send(embed=em)
return
if self.bot.auto_restart:
em.description = 'Servers will now automatically restart'
em.colour = 0x00FF00
if not self.bot.auto_restart:
em.description = 'Servers will no longer automatically restart'
em.colour = 0xFF0000
await ctx.send(embed=em)
def setup(bot): def setup(bot):
bot.add_cog(ServerCommands(bot)) bot.add_cog(ServerCommands(bot))