mirror of
https://github.com/TotalFreedomMC/TotalFreedomBot.git
synced 2024-12-22 23:54:58 +00:00
Update checks.py
This commit is contained in:
parent
31dea5a04f
commit
816088b3c7
1 changed files with 102 additions and 79 deletions
169
checks.py
169
checks.py
|
@ -1,84 +1,107 @@
|
||||||
import discord
|
import discord
|
||||||
import asyncio
|
|
||||||
import telnet
|
|
||||||
import time
|
|
||||||
import events
|
|
||||||
import os
|
|
||||||
|
|
||||||
from datetime import datetime
|
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from checks import *
|
|
||||||
from functions import *
|
|
||||||
|
|
||||||
class Miscellaneous(commands.Cog):
|
server_liaison = 769659653096472634
|
||||||
def __init__(self, bot):
|
event_host = 769659653096472629
|
||||||
self.bot = bot
|
server_banned = 769659653096472636
|
||||||
|
senior_admin = 769659653129896016
|
||||||
|
admin = 769659653121900553
|
||||||
|
master_builder = 769659653121900550
|
||||||
|
reports_channel_id = 769659654791233585
|
||||||
|
archived_reports_channel_id = 769659655033978900
|
||||||
|
guild_id = 769659653096472627
|
||||||
|
mentions_channel_id = 769659654027739151
|
||||||
|
discord_admin = 769659653129896025
|
||||||
|
discord_mod = 769659653129896023
|
||||||
|
devs = [114348811995840515, 147765181903011840]
|
||||||
|
bot_logs_channel_id = 771391406609662013
|
||||||
|
executive = 769659653129896019
|
||||||
|
asst_exec = 769659653129896018
|
||||||
|
developer = 769659653129896017
|
||||||
|
creative_designer = 771748500576141332
|
||||||
|
master_builder = 769659653121900550
|
||||||
|
server_chat = 769843495045169163
|
||||||
|
|
||||||
@is_dev()
|
class no_permission(commands.MissingPermissions):
|
||||||
@commands.command()
|
pass
|
||||||
async def killbot(self, ctx):
|
|
||||||
em = discord.Embed()
|
|
||||||
em.description = 'Bot offline.'
|
|
||||||
await ctx.send(embed=em)
|
|
||||||
await self.bot.logout()
|
|
||||||
return
|
|
||||||
|
|
||||||
@is_tf_developer()
|
def is_staff():
|
||||||
@commands.command()
|
def predicate(ctx):
|
||||||
async def telnetconfig(self, ctx, *args):
|
user = ctx.message.author
|
||||||
em = discord.Embed()
|
for role in user.roles:
|
||||||
em.title = 'Telnet config'
|
if role.id in [admin, senior_admin]:
|
||||||
if not args or args[0] in ['reconnect', 'connect']:
|
return True
|
||||||
try:
|
else:
|
||||||
self.bot.telnet_object.connect()
|
raise no_permission(['IS_STAFF_MEMBER'])
|
||||||
except Exception as e:
|
return commands.check(predicate)
|
||||||
em.description = f'Failed reconnection: {e}'
|
|
||||||
em.colour = 0xFF0000
|
|
||||||
else:
|
|
||||||
em.description = 'Reconnection successful'
|
|
||||||
em.colour = 0x00FF00
|
|
||||||
elif args[0] == 'name':
|
|
||||||
try:
|
|
||||||
self.bot.telnet_object.session.close()
|
|
||||||
self.bot.telnet_object.connect(args[1])
|
|
||||||
events.telnet_username = self.bot.telnet_object.username
|
|
||||||
config = read_json('config')
|
|
||||||
config['TELNET_USERNAME'] = self.bot.telnet_object.username
|
|
||||||
write_json('config', config)
|
|
||||||
except Exception as e:
|
|
||||||
em.description = f'Failed config edit: {e}'
|
|
||||||
em.colour = 0xFF0000
|
|
||||||
else:
|
|
||||||
em.description = 'Configuration successful'
|
|
||||||
em.colour = 0x00FF00
|
|
||||||
|
|
||||||
elif args[0] == 'test':
|
def is_dev():
|
||||||
command = ''
|
def predicate(ctx):
|
||||||
for x in range(1, len(args)):
|
user = ctx.message.author
|
||||||
command += f'{args[x]} '
|
if user.id in devs:
|
||||||
time_sent = str(datetime.utcnow().replace(microsecond=0))[11:]
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['BOT_DEVELOPER'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
||||||
self.bot.telnet_object.session.write(bytes(command, 'ascii') + b"\r\n")
|
def is_mod_or_has_perms(**permissions):
|
||||||
self.bot.telnet_object.session.read_until(bytes(f'{time_sent} INFO]:', 'ascii'), 2)
|
def predicate(ctx):
|
||||||
self.bot.telnet_object.session.read_until(bytes('\r\n', 'ascii'), 2)
|
user = ctx.message.author
|
||||||
next_line = self.bot.telnet_object.session.read_until(bytes('\r\n', 'ascii'), 2)
|
for role in user.roles:
|
||||||
em.description = f"Response from server: {next_line.decode('utf-8')}"
|
if role.id in [discord_mod, discord_admin] or permissions:
|
||||||
await ctx.send(embed=em)
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['IS_MOD_OR_HAS_PERMS'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
||||||
|
def is_executive():
|
||||||
|
def predicate(ctx):
|
||||||
|
user = ctx.message.author
|
||||||
|
for role in user.roles:
|
||||||
|
if role.id in [executive, asst_exec]:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['IS_EXECUTIVE'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
||||||
|
|
||||||
@is_dev()
|
def is_tf_developer():
|
||||||
@commands.command()
|
def predicate(ctx):
|
||||||
async def debug(self, ctx, *, cmd):
|
user = ctx.message.author
|
||||||
'Executes a line of code'
|
for role in user.roles:
|
||||||
try:
|
if role.id == developer:
|
||||||
result = eval(cmd)
|
return True
|
||||||
if asyncio.iscoroutine(result):
|
else:
|
||||||
result = await result
|
raise no_permission(['IS_TOTALFREEDOM_DEVELOPER'])
|
||||||
await ctx.send(f'''```py
|
return commands.check(predicate)
|
||||||
{result}```''')
|
|
||||||
except Exception as e:
|
|
||||||
await ctx.send(f'''```py
|
|
||||||
{type(e).__name__}: {e}```''')
|
|
||||||
|
|
||||||
def setup(bot):
|
def is_liaison():
|
||||||
bot.add_cog(Miscellaneous(bot))
|
def predicate(ctx):
|
||||||
|
user = ctx.message.author
|
||||||
|
for role in user.roles:
|
||||||
|
if role.id == server_liaison:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['IS_SERVER_LIAISON'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
||||||
|
def is_creative_designer():
|
||||||
|
def predicate(ctx):
|
||||||
|
user = ctx.message.author
|
||||||
|
for role in user.roles:
|
||||||
|
if role.id == creative_designer:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['IS_CREATIVE_DESIGNER'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
||||||
|
def is_senior():
|
||||||
|
def predicate(ctx):
|
||||||
|
user = ctx.message.author
|
||||||
|
for role in user.roles:
|
||||||
|
if role.id == senior_admin:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise no_permission(['IS_SENIOR_ADMIN'])
|
||||||
|
return commands.check(predicate)
|
||||||
|
|
Loading…
Reference in a new issue