Untitled

 avatar
unknown
plain_text
a year ago
9.1 kB
1
Indexable
from flask import Flask, render_template, request, jsonify, session
import requests
import json
import times
from datetime import timedelta
import apis
import constants
import traceback

app = Flask(__name__)

headers = {
    'Content-Type':'application/json',
}

userData = {}

@app.route('/get/', methods=['GET'])
def get_data():
    try:
        fullTime = times.hour_rounder()
        finalTime = fullTime - timedelta(hours=24)
        unixTime = times.timeToUnix(finalTime)
        
        if unixTime in userData:
            userDataTime = userData[unixTime]
            if userDataTime['username'] == request.args.get('username'):               
                return jsonify({"message": f"true"}), 200
            else:
                return jsonify({"message": f"false"}), 404
        else:
            return jsonify({"message": f"false"}), 404
    except Exception as e:
        print(e)
        return jsonify({"error": "Invalid JSON data"}), 400

@app.route('/claim/', methods=['POST'])
def set_data():
    try:
        data = request.get_json()
        print(type(data))
        userData[data['time']] = {
            "username" : data['username'],
            "messageID" : data['messageID']
        }
        print(data)
        return jsonify({"message": f"Sucess"}), 200
    except Exception as e:
        print(e)
        return jsonify({"error": "Invalid JSON data"}), 400

claimMessages = {}

@app.route('/deleteclaim/', methods=['GET'])
def delete_claim():
    try:
        fullTime = times.hour_rounder()
        finalTime = fullTime - timedelta(hours=2 * 12)
        unixtime = times.timeToUnix(finalTime)
        values = list(claimMessages.values())
        if unixtime in values:
            print("Running")
            key_list = list(claimMessages.keys())
            position = values.index(unixtime)
            messageID = key_list[position]
            return jsonify({"message": int(messageID)}), 200
        else:
            print(values)
            print(unixtime)
            return jsonify({"message" : "Not Found"}), 404
    except Exception as e:
        print(e)
        return jsonify({"error": "Invalid JSON data"}), 400


@app.route('/end/', methods=['POST'])
def end_server():
    try:
        data = request.get_json()
        print(type(data))
        print(data)
        
        winnersText = ""
        
        for item in data['winners']:
            userID = apis.getID(item)
            winnersText = winnersText + f"[{item}](https://www.roblox.com/users/{userID}/profile), "
            
        messageID = 0
        for userDataTime in userData:
            userDataInfo = userData[userDataTime]
            if userDataInfo['messageID'] and userDataInfo['username'] == data['host']:
                messageID = userData[userDataTime]['messageID']
                
        print("MESSAGE ID: " + str(messageID))
                
        hostText = f"[{data['host']}](https://www.roblox.com/users/{apis.getID(data['host'])}/profile)"
        embedData = {
            "content": None,
            "embeds": [
              {
                "title": "Tournament Ended",
                "description": f"""**Host:** {hostText}
                **Type:** {data['type']}
                **Tier:** {data['tier']}
                **Time:** Ended
                **Region:** {data['region']}
                **Players:** {data['players']}
                **Prize:** {data['prize']} Coins
                **Winners:** {winnersText}""",
                "color": 11796480,
                "thumbnail": {
                  "url": "https://cdn.discordapp.com/attachments/1155829751919943690/1167127610548035584/ra3.png?ex=654cff4a&is=653a8a4a&hm=4bdf2ad5600f5bc358dc0a7ab824c67d63713451cb2c9f7d426d4e1c1a3e0c4f&"
                }
              }
            ],
            "attachments": []
            }

        
        finalURL = constants.webhookURLs['end'] + str(messageID)
        webhookRequest = requests.patch(url=finalURL, data=json.dumps(embedData), headers=headers)
        print(webhookRequest.status_code)
        try:
            print(webhookRequest.json())
        except:
            pass
        return jsonify({"message": f"Sucess"}), 200
    except Exception as e:
        print(e)
        traceback.print_exc()
        return jsonify({"error": "Invalid JSON data"}), 400

@app.route('/matchlogs/', methods=['POST'])
def match_logs():
    try:
        data = request.get_json()
        print(type(data))
        print(data)
                
        winnerWins = data['winnerWins']
        loserWins = data['loserWins']
        
        winnersText = ""
        losersText = ""
        winnersKDR = {}
        losersKDR = {}
        
        winnerData = data['winners']
        for winnerUsername in winnerData:
            currentKills = winnerData[winnerUsername]['kills']
            currentDeaths = winnerData[winnerUsername]['deaths']
            currentKDR = (currentKills/currentDeaths)
            winnersKDR[winnerUsername] = currentKDR
            
        loserData = data['losers']
        for loserUsername in loserData:
            currentKills = loserData[loserUsername]['kills']
            currentDeaths = loserData[loserUsername]['deaths']
            currentKDR = (currentKills/currentDeaths)
            losersKDR[loserUsername] = currentKDR
            
        sortedWinnerKDR = sorted(winnersKDR, reverse=True)
        sortedLosersKDR = sorted(losersKDR, reverse=True)
        
        if winnersKDR[sortedWinnerKDR[0]] > losersKDR[sortedLosersKDR[0]]:
            print("WINNERS WINNING")
            for winnerUsername in sortedWinnerKDR:
                if winnerUsername == sortedWinnerKDR[0]:
                    winnersText += f":star: [{winnerUsername}](https://www.roblox.com/users/{apis.getID(winnerUsername)}/profile) `{winnerData[winnerUsername]['kills']} | {winnerData[winnerUsername]['deaths']}` \n"
                else:
                    winnersText += f"[{winnerUsername}](https://www.roblox.com/users/{apis.getID(winnerUsername)}/profile) `{winnerData[winnerUsername]['kills']} | {winnerData[winnerUsername]['deaths']}` \n"
                    
            for loserUsername in sortedLosersKDR:
                losersText += f"[{loserUsername}](https://www.roblox.com/users/{apis.getID(loserUsername)}/profile) `{loserData[loserUsername]['kills']} | {loserData[loserUsername]['deaths']}` \n"
            
        elif winnersKDR[sortedWinnerKDR[0]] < losersKDR[sortedLosersKDR[0]]:
            print("LOSERS WINNING")
            for loserUsername in sortedLosersKDR:
                if loserUsername == sortedLosersKDR[0]:
                    losersText += f":star: [{loserUsername}](https://www.roblox.com/users/{apis.getID(loserUsername)}/profile) `{loserData[loserUsername]['kills']} | {loserData[loserUsername]['deaths']}` \n"
                else:
                    losersText += f"[{loserUsername}](https://www.roblox.com/users/{apis.getID(loserUsername)}/profile) `{loserData[loserUsername]['kills']} | {loserData[loserUsername]['deaths']}` \n"
            for winnerUsername in sortedWinnerKDR:
                winnersText += f"[{winnerUsername}](https://www.roblox.com/users/{apis.getID(winnerUsername)}/profile) `{winnerData[winnerUsername]['kills']} | {winnerData[winnerUsername]['deaths']}` \n"
                
        print(sortedWinnerKDR)
        print(sortedLosersKDR)
        print(winnersText)
        print(losersText)
        print(winnerData)
        print(loserData)
        embedData = {
            "content": None,
            "embeds": [
              {
                "title": "Match Logs",
                "color": 11796480,
                "thumbnail": {
                  "url": "https://cdn.discordapp.com/attachments/1155829751919943690/1167127610548035584/ra3.png?ex=654cff4a&is=653a8a4a&hm=4bdf2ad5600f5bc358dc0a7ab824c67d63713451cb2c9f7d426d4e1c1a3e0c4f&"
                },
                "fields": [
                    {
                      "name": f"Winners [{winnerWins}-{loserWins}]",
                      "value": winnersText
                    },
                    {
                      "name": f"Losers [{loserWins}-{winnerWins}]",
                      "value" : losersText
                    }
                ]
              }
            ],
            "attachments": []
            }

        
        finalURL = constants.webhookURLs['matchLogs']
        webhookRequest = requests.post(url=finalURL, data=json.dumps(embedData), headers=headers)
        print(webhookRequest.status_code)
        try:
            print(webhookRequest.json())
        except:
            pass
        return jsonify({"message": f"Sucess"}), 200
    except Exception as e:
        print(e)
        traceback.print_exc()
        return jsonify({"error": "Invalid JSON data"}), 400


def startApp():
    app.run(debug=False, host="0.0.0.0", port=8140)