mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Added brawlhalla integration
This commit is contained in:
parent
6aacc1524d
commit
84d954c305
3 changed files with 67 additions and 0 deletions
15
brawlhalla.py
Normal file
15
brawlhalla.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import asyncio
|
||||||
|
import requests
|
||||||
|
import bs4
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
# Get ladder page for a player
|
||||||
|
async def get_leaderboard_for(name: str):
|
||||||
|
print("[Brawlhalla] Getting leaderboards page for {name}".format(name=name))
|
||||||
|
# Get leaderboards page for that name
|
||||||
|
r = loop.run_in_executor(None, requests.get, "http://www.brawlhalla.com/rankings/1v1/eu/?p={name}".format(name))
|
||||||
|
# Check if the request is successful
|
||||||
|
if r.status_code == 200:
|
||||||
|
return r
|
||||||
|
else:
|
||||||
|
raise Exception("Something went wrong in the Brawlhalla request.")
|
49
main.py
49
main.py
|
@ -5,6 +5,8 @@ import overwatch
|
||||||
import league
|
import league
|
||||||
import strings as s
|
import strings as s
|
||||||
import telegram
|
import telegram
|
||||||
|
import bs4
|
||||||
|
import brawlhalla
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
d_client = discord.Client()
|
d_client = discord.Client()
|
||||||
|
@ -145,6 +147,53 @@ async def league_level_up(timeout):
|
||||||
else:
|
else:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
# Every timeout seconds, update player mmr and rank
|
||||||
|
async def brawlhalla_update_mmr(timeout):
|
||||||
|
while True:
|
||||||
|
if discord_is_ready:
|
||||||
|
print("[Brawlhalla] Starting check for mmr changes...")
|
||||||
|
# Update mmr for every player in list
|
||||||
|
for player in db:
|
||||||
|
if "brawlhalla" in db[player]:
|
||||||
|
try:
|
||||||
|
r = await brawlhalla.get_leaderboard_for(db[player]["brawlhalla"]["username"])
|
||||||
|
except Exception:
|
||||||
|
print("[Brawlhalla] Request returned an unhandled exception.")
|
||||||
|
else:
|
||||||
|
# Parse the page
|
||||||
|
bs = bs4.BeautifulSoup(r.text)
|
||||||
|
# Divide the page into rows
|
||||||
|
rows = bs.find_all("tr")
|
||||||
|
# Find the row containing the rank
|
||||||
|
for row in rows:
|
||||||
|
# Skip header rows
|
||||||
|
if row['class'] == "rheader":
|
||||||
|
continue
|
||||||
|
# Check if the row belongs to the correct player
|
||||||
|
# (Brawlhalla searches aren't case sensitive)
|
||||||
|
for column in row.children:
|
||||||
|
# Find the player name column
|
||||||
|
if column['class'] == "pnameleft":
|
||||||
|
# Check if the name matches the parameter
|
||||||
|
if column.string == db[player]["brawlhalla"]["username"]:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
# Get the current mmr
|
||||||
|
mmr = int(row.children[7].string)
|
||||||
|
# Compare the mmr with the value saved in the database
|
||||||
|
if mmr != db[player]["brawlhalla"]["mmr"]:
|
||||||
|
# Send a message
|
||||||
|
loop.create_task(send_event(s.brawlhalla_new_mmr, player, mmr=mmr))
|
||||||
|
# Update database
|
||||||
|
db[player]["brawlhalla"]["mmr"] = mmr
|
||||||
|
f = open("db.json", "w")
|
||||||
|
json.dump(db, f)
|
||||||
|
f.close()
|
||||||
|
break
|
||||||
|
finally:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
# Send a new event to both Discord and Telegram
|
# Send a new event to both Discord and Telegram
|
||||||
async def send_event(eventmsg: str, player: str, **kwargs):
|
async def send_event(eventmsg: str, player: str, **kwargs):
|
||||||
# Create arguments dict
|
# Create arguments dict
|
||||||
|
|
|
@ -17,3 +17,6 @@ league_tier_list = ["Bronzo",
|
||||||
|
|
||||||
# League of Legends: Level up!
|
# League of Legends: Level up!
|
||||||
league_level_up = "{player} è salito al livello **{level}** su _League of Legends_!"
|
league_level_up = "{player} è salito al livello **{level}** su _League of Legends_!"
|
||||||
|
|
||||||
|
# Brawlhalla: new MMR
|
||||||
|
brawlhalla_new_mmr = "{player} ora ha **{mmr}** MMR su _Brawlhalla_!"
|
||||||
|
|
Loading…
Reference in a new issue