mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Added league level check
This commit is contained in:
parent
03cc06d79c
commit
d67ca94c77
3 changed files with 82 additions and 16 deletions
20
league.py
20
league.py
|
@ -27,7 +27,7 @@ roman = ['I', 'II', 'III', 'IV', 'V']
|
||||||
# Get player rank info
|
# Get player rank info
|
||||||
async def get_player_rank(region: str, summonerid: int, **kwargs):
|
async def get_player_rank(region: str, summonerid: int, **kwargs):
|
||||||
print("[League] Getting league info for: {region} {summonerid}".format(region=region, summonerid=summonerid))
|
print("[League] Getting league info for: {region} {summonerid}".format(region=region, summonerid=summonerid))
|
||||||
# GET the json unofficial API response
|
# GET the json API response
|
||||||
r = await loop.run_in_executor(None, requests.get,
|
r = await loop.run_in_executor(None, requests.get,
|
||||||
'https://{region}.api.pvp.net/api/lol/{region}/v2.5/league/by-summoner/{summonerid}'
|
'https://{region}.api.pvp.net/api/lol/{region}/v2.5/league/by-summoner/{summonerid}'
|
||||||
'/entry?api_key={token}'.format(region=region, summonerid=summonerid, token=token))
|
'/entry?api_key={token}'.format(region=region, summonerid=summonerid, token=token))
|
||||||
|
@ -40,3 +40,21 @@ async def get_player_rank(region: str, summonerid: int, **kwargs):
|
||||||
raise RateLimitException("You've been ratelimited by Riot. Check your developer dashboard.")
|
raise RateLimitException("You've been ratelimited by Riot. Check your developer dashboard.")
|
||||||
else:
|
else:
|
||||||
raise Exception("Unhandled API response.")
|
raise Exception("Unhandled API response.")
|
||||||
|
|
||||||
|
|
||||||
|
# Get player info data
|
||||||
|
async def get_player_info(region: str, summonerid: int, **kwargs):
|
||||||
|
print("[League] Getting profile info for: {region} {summonerid}".format(region=region, summonerid=summonerid))
|
||||||
|
# GET the json API response
|
||||||
|
r = await loop.run_in_executor(None, requests.get, 'https://{region}.api.pvp.net//api/lol/{region}/v1.4/summoner/'
|
||||||
|
'{summonerid}/entry?api_key={token}'
|
||||||
|
.format(region=region, summonerid=summonerid, token=token))
|
||||||
|
# Ensure the request is successful
|
||||||
|
if r.status_code == 200:
|
||||||
|
return r.json()[str(summonerid)]
|
||||||
|
elif r.status_code == 404:
|
||||||
|
raise NoRankedGamesCompletedException("This player hasn't completed any ranked games.")
|
||||||
|
elif r.status_code == 429:
|
||||||
|
raise RateLimitException("You've been ratelimited by Riot. Check your developer dashboard.")
|
||||||
|
else:
|
||||||
|
raise Exception("Unhandled API response.")
|
||||||
|
|
75
main.py
75
main.py
|
@ -35,17 +35,24 @@ async def overwatch_level_up(timeout):
|
||||||
# Update data for every player in list
|
# Update data for every player in list
|
||||||
for player in db:
|
for player in db:
|
||||||
if "overwatch" in db[player]:
|
if "overwatch" in db[player]:
|
||||||
r = await overwatch.get_player_data(**db[player]["overwatch"])
|
try:
|
||||||
if r["data"]["level"] > db[player]["overwatch"]["level"]:
|
r = await overwatch.get_player_data(**db[player]["overwatch"])
|
||||||
# Send the message
|
except overwatch.NotFoundException:
|
||||||
loop.create_task(send_event(eventmsg=s.overwatch_level_up,
|
print("[Overwatch] Player not found.")
|
||||||
player=player,
|
else:
|
||||||
level=r["data"]["level"]))
|
if "level" not in db[player]["overwatch"] \
|
||||||
# Update database
|
or r["data"]["level"] > db[player]["overwatch"]["level"]:
|
||||||
db[player]["overwatch"]["level"] = r["data"]["level"]
|
# Send the message
|
||||||
f = open("db.json", "w")
|
loop.create_task(send_event(eventmsg=s.overwatch_level_up,
|
||||||
json.dump(db, f)
|
player=player,
|
||||||
f.close()
|
level=r["data"]["level"]))
|
||||||
|
# Update database
|
||||||
|
db[player]["overwatch"]["level"] = r["data"]["level"]
|
||||||
|
f = open("db.json", "w")
|
||||||
|
json.dump(db, f)
|
||||||
|
f.close()
|
||||||
|
finally:
|
||||||
|
asyncio.sleep(1)
|
||||||
print("[Overwatch] Check completed successfully.")
|
print("[Overwatch] Check completed successfully.")
|
||||||
# Wait for the timeout
|
# Wait for the timeout
|
||||||
await asyncio.sleep(timeout)
|
await asyncio.sleep(timeout)
|
||||||
|
@ -56,7 +63,7 @@ async def overwatch_level_up(timeout):
|
||||||
async def league_rank_change(timeout):
|
async def league_rank_change(timeout):
|
||||||
while True:
|
while True:
|
||||||
if discord_is_ready:
|
if discord_is_ready:
|
||||||
print("[League] Starting check...")
|
print("[League] Starting check for rank changes...")
|
||||||
# Update data for every player in list
|
# Update data for every player in list
|
||||||
for player in db:
|
for player in db:
|
||||||
if "league" in db[player]:
|
if "league" in db[player]:
|
||||||
|
@ -73,7 +80,8 @@ async def league_rank_change(timeout):
|
||||||
tier_number = league.ranklist.index(r["tier"])
|
tier_number = league.ranklist.index(r["tier"])
|
||||||
roman_number = league.roman.index(r["entries"][0]["division"])
|
roman_number = league.roman.index(r["entries"][0]["division"])
|
||||||
# Check for tier changes
|
# Check for tier changes
|
||||||
if tier_number != db[player]["league"]["tier"] or roman_number != db[player]["league"]["division"]:
|
if tier_number != db[player]["league"]["tier"] \
|
||||||
|
or roman_number != db[player]["league"]["division"]:
|
||||||
# Send the message
|
# Send the message
|
||||||
loop.create_task(send_event(eventmsg=s.league_rank_up,
|
loop.create_task(send_event(eventmsg=s.league_rank_up,
|
||||||
player=player,
|
player=player,
|
||||||
|
@ -87,8 +95,42 @@ async def league_rank_change(timeout):
|
||||||
f.close()
|
f.close()
|
||||||
finally:
|
finally:
|
||||||
# Prevent getting ratelimited by Riot
|
# Prevent getting ratelimited by Riot
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(2)
|
||||||
print("[League] Check completed.")
|
print("[League] Rank check completed.")
|
||||||
|
# Wait for the timeout
|
||||||
|
await asyncio.sleep(timeout)
|
||||||
|
else:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
# Every timeout seconds, update player level and check for changes
|
||||||
|
async def league_level_up(timeout):
|
||||||
|
while True:
|
||||||
|
if discord_is_ready:
|
||||||
|
print("[League] Starting check for level changes...")
|
||||||
|
# Update data for every player in list
|
||||||
|
for player in db:
|
||||||
|
if "league" in db[player]:
|
||||||
|
try:
|
||||||
|
r = await league.get_player_info(**db[player]["league"])
|
||||||
|
except league.RateLimitException:
|
||||||
|
# If you've been ratelimited, skip the player and notify the console.
|
||||||
|
print("[League] Request rejected for rate limit.")
|
||||||
|
else:
|
||||||
|
# Check for level changes
|
||||||
|
if "level" not in db[player]["league"] or r["level"] > db[player]["league"]["level"]:
|
||||||
|
# Send the message
|
||||||
|
loop.create_task(send_event(eventmsg=s.league_level_up,
|
||||||
|
player=player,
|
||||||
|
level=r["level"]))
|
||||||
|
# Update database
|
||||||
|
db[player]["league"]["level"] = r["level"]
|
||||||
|
f = open("db.json", "w")
|
||||||
|
json.dump(db, f)
|
||||||
|
f.close()
|
||||||
|
finally:
|
||||||
|
# Prevent getting ratelimited by Riot
|
||||||
|
await asyncio.sleep(2)
|
||||||
|
print("[League] Level check completed.")
|
||||||
# Wait for the timeout
|
# Wait for the timeout
|
||||||
await asyncio.sleep(timeout)
|
await asyncio.sleep(timeout)
|
||||||
else:
|
else:
|
||||||
|
@ -123,6 +165,9 @@ print("[Overwatch] Added level up check to the queue.")
|
||||||
loop.create_task(league_rank_change(900))
|
loop.create_task(league_rank_change(900))
|
||||||
print("[League] Added rank change check to the queue.")
|
print("[League] Added rank change check to the queue.")
|
||||||
|
|
||||||
|
loop.create_task(league_level_up(900))
|
||||||
|
print("[League] Added level change check to the queue.")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
loop.run_until_complete(d_client.start(token))
|
loop.run_until_complete(d_client.start(token))
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
|
|
@ -14,3 +14,6 @@ league_tier_list = ["Bronzo",
|
||||||
"Diamante",
|
"Diamante",
|
||||||
"Master",
|
"Master",
|
||||||
"Challenger"]
|
"Challenger"]
|
||||||
|
|
||||||
|
# League of Legends: Level up!
|
||||||
|
league_level_up = "{player} è salito al livello **{level}** su _League of Legends_!"
|
||||||
|
|
Loading…
Reference in a new issue