Skip to content
This repository has been archived by the owner on Sep 30, 2022. It is now read-only.

Commit

Permalink
Merge pull request #7 from FatDubs/beta
Browse files Browse the repository at this point in the history
Beta
  • Loading branch information
duhby authored Jul 16, 2020
2 parents 3a41c99 + 1e0193d commit b5002ad
Show file tree
Hide file tree
Showing 6 changed files with 240 additions and 47 deletions.
70 changes: 68 additions & 2 deletions actual files/getstats.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,52 @@ def getSwLevel(exp):
level += 1
return level + exp // 10000

# credit to people who made slothpixel
# I still had to convert .js to .py and idk .js lol
def getGuildLevel(exp):
exp_needed = [
100000,
150000,
250000,
500000,
750000,
1000000,
1250000,
1500000,
2000000,
2500000,
2500000,
2500000,
2500000,
2500000,
3000000,
]

level = 0

# Increments by one from zero to the level cap
# had to change to -1 because of the way it was
# written in .js
i = -1
while i <= 1000:
i += 1
need = 0
if i >= len(exp_needed):
need = exp_needed[len(exp_needed) - 1]
else: need = exp_needed[i]

# if the required exp to get to the next level isn't met, returns
# the current level plus progress towards the next (unused exp/need)
# otherwise increments the level and subtracts the used exp from exp var
if (exp - need) < 0:
return round((level + (exp / need)) * 100) / 100
level += 1
exp -= need

# if there is enough exp to iterate 1k times
# (the guild is level 1k+)
return 1000

def getRoman(n):
val = [10, 9, 5, 4, 1]
syb = ["X", "IX", "V", "IV", "I"]
Expand Down Expand Up @@ -171,7 +217,6 @@ def getSwStats(player,mode):
def getTkrStats(player):
try: data = player["stats"]["GingerBread"]
except: return None
out = {}

if "laps_completed" in data:
laps = data["laps_completed"]
Expand Down Expand Up @@ -215,6 +260,7 @@ def getTkrStats(player):
else:
br = 0

out = {}
out["laps"] = laps
# out["wins"] = wins
out["gold_trophies"] = gold
Expand Down Expand Up @@ -312,7 +358,6 @@ def getDuelStats(player,mode):
def getPitStats(player):
try: data = player["stats"]["Pit"]["pit_stats_ptl"]
except: return None
out = {}

if "pit_prestiges" in player["achievements"]:
prestige = getRoman(player["achievements"]["pit_prestiges"])
Expand All @@ -336,8 +381,29 @@ def getPitStats(player):
else:
highest_streak = 0

out = {}
out["prestige"] = prestige
out["kd"] = kd
out["max_streak"] = highest_streak

return out

def getGuildStats(data):
try:
level = getGuildLevel(data["exp"])
name = data["name"]
description = data["description"]
tag = data["tag"]
members = len(data["members"])

except Exception as error:
return None

out = {}
out["level"] = level
out["name"] = name
out["desc"] = description
out["tag"] = tag
out["members"] = members

return out
44 changes: 41 additions & 3 deletions actual files/hypixelapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def isFriended(username,bot):
username = mojangapi.getUUID(username)
try:
friends = requests.get(f"https://api.hypixel.net/friends?key={apikey}&uuid={uuid}",timeout=api_timeout).json()
except Exception:
except requests.exceptions.Timeout:
logging.error("API Timeout! (hypixel)")
return False
if username in str(friends):
Expand All @@ -57,8 +57,9 @@ def canMsg(username,bot):
apikey = nextKey()
try:
response = requests.get(f"https://api.hypixel.net/player?key={apikey}&name={username}",timeout=api_timeout).json()
except Exception:
except requests.exceptions.Timeout:
logging.error("API Timeout! (hypixel)")
return False
settings = response["player"]["settings"]
if settings["privateMessagePrivacy"] == "MAX":
level = 4
Expand All @@ -83,7 +84,7 @@ def getPlayer(username,mode):
apikey = nextKey()
try:
response = requests.get(f"https://api.hypixel.net/player?key={apikey}&name={username}",timeout=api_timeout)
except Exception:
except requests.exceptions.Timeout:
logging.error("API Timeout! (hypixel)")
return {}
try:
Expand Down Expand Up @@ -119,6 +120,29 @@ def getPlayer(username,mode):
logging.error(error)
return {}

def getGuild(name):
api_key = nextKey()
uuid = mojangapi.getUUID(name)
if uuid == None:
return {"stats":None,"username":name}
try:
guildid = requests.get(f"https://api.hypixel.net/findGuild?key={api_key}&byUuid={uuid}",timeout=api_timeout).json()["guild"]
if guildid == None:
return {"stats":None,"username":name}
data = requests.get(f"https://api.hypixel.net/guild?key={api_key}&id={guildid}",timeout=api_timeout).json()["guild"]
except requests.exceptions.Timeout:
logging.error("API Timeout! (hypixel)")
return {}

try:
out = {}
out["username"] = name
out["stats"] = getstats.getGuildStats(data)
return out
except Exception as error:
logging.error(error)
return {}

def convert(data,mode):
try:
username = data["username"]
Expand Down Expand Up @@ -192,6 +216,20 @@ def convert(data,mode):
else:
main = "[{:<4}]{:12} KD:{} Highest KS:{}".format(stats["prestige"],username,stats["kd"],stats["max_streak"])

# guild
elif "guild" in mode:
mode = "GUILD"

if stats == None:
main = username + f" - This player is not in a guild! (or doesn't exist)"
name = "n/a"
mode = name
else:
main = "[{:<3}] Tag:[{}] Members:{} Desc:{}".format(stats["level"],stats["tag"],stats["members"],stats["desc"][:16])
name = stats["name"]
mode = name


return {"main":main,"mode":mode}

except Exception as error:
Expand Down
Loading

0 comments on commit b5002ad

Please sign in to comment.