From 7b5f763e3488b6c64992e710e87e5aed9573a4d6 Mon Sep 17 00:00:00 2001 From: Alastair Holland Date: Wed, 13 May 2020 23:05:28 +0100 Subject: [PATCH] Working developer options --- lib/bot.py | 2 +- lib/database.py | 39 ++++++++++++++++++++++++++++++++++----- lib/databaseSetup.py | 18 +++++++++--------- lib/developer.py | 42 +++++++++++++++++++++++++++++++++--------- 4 files changed, 77 insertions(+), 24 deletions(-) diff --git a/lib/bot.py b/lib/bot.py index fd2d631..1fe6581 100755 --- a/lib/bot.py +++ b/lib/bot.py @@ -99,7 +99,7 @@ async def on_message(message): #msg = "{}Total Minecraft Servers: {}\n".format(msg, database.get_total("minecraft_server")) #msg = "{}Percentage of servers using maps: {}%\n".format(msg, str((int(database.get_total("map"))/int(database.get_total("minecraft_server"))*100))) elif ('developer') in message_command: - developer.developer_check(message.content, message.author) + msg = developer.developer_check(user_message, message.author, guild_id) elif ('status') in message_command: try: status = server.status() diff --git a/lib/database.py b/lib/database.py index cc881bf..98423d1 100755 --- a/lib/database.py +++ b/lib/database.py @@ -2,14 +2,29 @@ import sqlite3 from sqlite3 import Error import os -def devs(username): +def devs(user): conn = connect() sql = '''SELECT username FROM developers''' cur = conn.cursor() cur.execute(sql) - if username in str(cur.fetchall()): - return True + for i in cur.fetchall(): + user_value = i[0] + if str(user) in str(user_value): + return True + return False + +def permission_check(command, user): + conn = connect() + sql = '''SELECT {} + FROM developers + WHERE username = "{}"'''.format(command, user) + cur = conn.cursor() + cur.execute(sql) + for i in cur.fetchall(): + user_value = i[0] + if str(user_value) == "1": + return True return False def devs_read(table): @@ -22,8 +37,9 @@ def devs_read(table): def add_dev(username): conn = connect() - sql = '''INSERT INTO developers(username) - VALUES("{}")'''.format(username) + sql = '''INSERT INTO developers(username, data, deploy, add_dev, modify_dev, remove_dev, restart, start, stop) + VALUES("{}", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)'''.format(username) + print(sql) cur = conn.cursor() cur.execute(sql) conn.commit() @@ -36,6 +52,19 @@ def remove_dev(username): cur.execute(sql) conn.commit() +def modify_dev(username, permission, value): + if value == "true": + value = 1 + else: + value = 0 + conn = connect() + sql = '''UPDATE developers + SET {} = "{}" + WHERE username = "{}"'''.format(permission, value, username) + cur = conn.cursor() + cur.execute(sql) + conn.commit() + def sql_guard(message): danger_commands = ["drop", "table", "delete", "from", "update", "insert", "into", "select", "truncate"] for i in danger_commands: diff --git a/lib/databaseSetup.py b/lib/databaseSetup.py index 6866280..9f32489 100755 --- a/lib/databaseSetup.py +++ b/lib/databaseSetup.py @@ -61,14 +61,14 @@ def main(): create_dev_table_sql = """CREATE TABLE IF NOT EXISTS developers ( username text PRIMARY KEY, - data text, - deploy text, - add_dev text, - modify_dev text, - remove_dev, - restart text, - start text, - stop text + data bool, + deploy bool, + add_dev bool, + modify_dev bool, + remove_dev bool, + restart bool, + start bool, + stop bool );""" if not os.path.isfile(database_path): @@ -81,6 +81,6 @@ def main(): create_table(conn, create_player_table_sql) create_table(conn, create_dev_table_sql) - add_primary_developer(conn, "<@!326831993520390154>") + add_primary_developer(conn, "AlastairHolland#6538") conn.commit() \ No newline at end of file diff --git a/lib/developer.py b/lib/developer.py index eb3d462..0251aa6 100755 --- a/lib/developer.py +++ b/lib/developer.py @@ -2,13 +2,18 @@ import database import os def developer_modify(message): + msg = "" command = message[1] if command == "deploy": deploy = True elif command == "start": start = True - if message[2]: + if len(message) >= 2: if command == "data": + if message[2] == "*": + for table_name in ["servers", "players", "developers"]: + msg = "{} \n__________________\n_**{}**_\n__________________ \n{}".format(msg, table_name, database.devs_read(table_name)) + return msg return database.devs_read(message[2]) elif command == "add_dev": if not database.devs(message[2]): @@ -19,10 +24,10 @@ def developer_modify(message): elif command == "remove_dev": if database.devs(message[2]): database.remove_dev(message[2]) - return "{} is no longer a developer" + return "{} is no longer a developer".format(message[2]) else: - return "{} is not a developer at the moment" - if message[3] and message[4]: + return "{} is not a developer at the moment".format(message[2]) + if len(message) == 4: if command == "modify_dev": if database.devs(message[2]): if message[4] == "true" or message[4] == "false": @@ -32,16 +37,35 @@ def developer_modify(message): return "Please spefify if you want this to be true or false" else: return "{} is not a developer".format(message[2]) + else: + return "Invalid command, see the developer help for info" + else: + return "Invalid command, see the developer help for info" else: return "You need a variable to change, see '?developer help' for more info" -def check_message(message): +def check_message(message, author, guild_id): message = message.split() - if permission_check(message[1]): + if len(message) == 1: + return "Please specify a command" + if message[1] == "help": + dev_help = { + "restart" : "Restart all bots", + "deploy" : "Deploy the current code version to all bots and restart", + "data [table]" : "Display all data associated with table", + "add_dev [username]" : "Add Discord developer", + "modify_dev [username] [permission] [true/false]": "Modify permission of a developer", + "remove_dev [username]" : "Remove developer" + } + msg = "" + for i in dev_help: + msg = "{} - {}developers {}\n".format(msg, database.read_database("command_prefix", guild_id), i) + return msg + if database.permission_check(message[1], author): return developer_modify(message) -def developer_check(message, author): - if database.devs(): - return check_message(message) +def developer_check(message, author, guild_id): + if database.devs(author): + return check_message(message, author, guild_id) else: return "You don't have developer permissions to use this" \ No newline at end of file