TotalFreedomBot/commands/miscellaneous.py

94 lines
3.1 KiB
Python
Raw Normal View History

2021-01-04 23:46:10 +00:00
import asyncio
2020-10-31 02:03:22 +00:00
from datetime import datetime
2021-01-04 23:47:07 +00:00
import discord
from discord.ext import commands
2021-01-07 19:16:57 +00:00
from checks import is_dev, is_tf_developer
from functions import read_json, write_json
2020-10-28 11:47:39 +00:00
2020-10-28 11:47:39 +00:00
class Miscellaneous(commands.Cog):
def __init__(self, bot):
self.bot = bot
2020-12-02 21:36:54 +00:00
2020-10-28 11:47:39 +00:00
@is_dev()
2020-10-31 02:03:22 +00:00
@commands.command()
2020-10-28 11:47:39 +00:00
async def killbot(self, ctx):
em = discord.Embed()
em.description = 'Bot offline.'
await ctx.send(embed=em)
await self.bot.logout()
return
2020-11-24 19:35:48 +00:00
@is_tf_developer()
2020-10-31 02:03:22 +00:00
@commands.command()
async def telnetconfig(self, ctx, *args):
em = discord.Embed()
em.title = 'Telnet config'
if not args or args[0] in ['reconnect', 'connect']:
try:
self.bot.telnet_object.connect()
2021-01-04 23:46:10 +00:00
self.bot.telnet_object_2.connect()
2020-10-31 02:03:22 +00:00
except Exception as e:
em.description = f'Failed reconnection: {e}'
em.colour = 0xFF0000
else:
em.description = 'Reconnection successful'
em.colour = 0x00FF00
elif args[0] == 'name':
try:
2020-10-31 20:05:39 +00:00
self.bot.telnet_object.session.close()
2021-01-04 23:46:10 +00:00
self.bot.telnet_object_2.session.close()
2020-10-31 02:03:22 +00:00
self.bot.telnet_object.connect(args[1])
2021-01-04 23:46:10 +00:00
self.bot.telnet_object_2.connect(args[1])
2020-10-31 20:05:39 +00:00
config = read_json('config')
config['TELNET_USERNAME'] = self.bot.telnet_object.username
write_json('config', config)
2020-10-31 02:03:22 +00:00
except Exception as e:
em.description = f'Failed config edit: {e}'
em.colour = 0xFF0000
else:
em.description = 'Configuration successful'
em.colour = 0x00FF00
2020-10-31 02:03:22 +00:00
elif args[0] == 'test':
command = ''
for x in range(1, len(args)):
command += f'{args[x]} '
time_sent = str(datetime.utcnow().replace(microsecond=0))[11:]
self.bot.telnet_object.session.write(
bytes(command, 'ascii') + b"\r\n")
self.bot.telnet_object.session.read_until(
bytes(f'{time_sent} INFO]:', 'ascii'), 2)
2021-01-07 19:16:57 +00:00
if ctx.channel == ctx.guild.get_channel(self.bot.server_chat):
self.bot.telnet_object.session.read_until(
bytes('\r\n', 'ascii'), 2)
next_line = self.bot.telnet_object.session.read_until(
bytes('\r\n', 'ascii'), 2)
2020-10-31 02:03:22 +00:00
em.description = f"Response from server: {next_line.decode('utf-8')}"
2020-11-24 19:53:33 +00:00
else:
em.description = f'Command **{args[0]}** not found.'
em.colour = 0xFF0000
2020-11-24 19:53:33 +00:00
await ctx.send(embed=em)
2020-10-31 02:03:22 +00:00
@is_dev()
@commands.command()
2020-10-28 11:47:39 +00:00
async def debug(self, ctx, *, cmd):
2021-01-07 19:16:57 +00:00
"""Executes a line of code"""
2020-10-28 11:47:39 +00:00
try:
2020-12-02 22:53:33 +00:00
result = eval(cmd)
2020-10-28 11:47:39 +00:00
if asyncio.iscoroutine(result):
result = await result
await ctx.send(f'''```py
{result}```''')
except Exception as e:
await ctx.send(f'''```py
{type(e).__name__}: {e}```''')
2020-10-28 11:47:39 +00:00
def setup(bot):
bot.add_cog(Miscellaneous(bot))