mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 11:34:18 +00:00
Added opendota.com support
This commit is contained in:
parent
00820f1454
commit
d796c69242
3 changed files with 54 additions and 3 deletions
40
main.py
40
main.py
|
@ -1,8 +1,11 @@
|
|||
import asyncio
|
||||
import discord
|
||||
import json
|
||||
|
||||
import opendota
|
||||
import overwatch
|
||||
import league
|
||||
import steam
|
||||
import strings as s
|
||||
import telegram
|
||||
import bs4
|
||||
|
@ -215,7 +218,7 @@ async def brawlhalla_update_mmr(timeout):
|
|||
# Compare the mmr with the value saved in the database
|
||||
if mmr != old_mmr:
|
||||
# Send a message
|
||||
loop.create_task(send_event(s.brawlhalla_new_mmr, player, mmr=mmr, oldmmr=old_mmr))
|
||||
loop.create_task(send_event(s.brawlhalla_new_mmr, player=player, mmr=mmr, oldmmr=old_mmr))
|
||||
# Update database
|
||||
db[player]["brawlhalla"]["mmr"] = mmr
|
||||
f = open("db.json", "w")
|
||||
|
@ -229,6 +232,40 @@ async def brawlhalla_update_mmr(timeout):
|
|||
else:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
# Every timeout seconds, report the last match
|
||||
async def opendota_last_match(timeout):
|
||||
while True:
|
||||
if discord_is_ready:
|
||||
print("[OpenDota] Starting last match check...")
|
||||
# Check for new dota match for every player in the database
|
||||
for player in db:
|
||||
try:
|
||||
# TODO: Se uno non ha mai giocato a dota, cosa succede? Aggiungere handling
|
||||
r = await opendota.get_latest_match(steam.convert_sid_1_3(db[player]["steam"]["steamid"]))
|
||||
except KeyError:
|
||||
continue
|
||||
else:
|
||||
try:
|
||||
old_last = db[player]["dota"]["lastmatch"]
|
||||
except KeyError:
|
||||
old_last = 0
|
||||
last = r["match_id"]
|
||||
if last > old_last:
|
||||
# Send a message
|
||||
loop.create_task(send_event(s.dota_new_match, player=player, k=r["kills"], d=r["deaths"], a=r["assists"]))
|
||||
# Update database
|
||||
db[player]["dota"]["lastmatch"] = last
|
||||
f = open("db.json", "w")
|
||||
json.dump(db, f)
|
||||
f.close()
|
||||
finally:
|
||||
await asyncio.sleep(2)
|
||||
print("[OpenDota] Check successful.")
|
||||
await asyncio.sleep(timeout)
|
||||
else:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
|
||||
# Send a new event to both Discord and Telegram
|
||||
async def send_event(eventmsg: str, player: str, **kwargs):
|
||||
# Create arguments dict
|
||||
|
@ -251,7 +288,6 @@ async def send_event(eventmsg: str, player: str, **kwargs):
|
|||
# Send the message
|
||||
loop.create_task(telegram.send_message(msg, -2141322))
|
||||
|
||||
|
||||
loop.create_task(overwatch_status_change(600))
|
||||
print("[Overwatch] Added level up check to the queue.")
|
||||
|
||||
|
|
12
opendota.py
Normal file
12
opendota.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
import asyncio
|
||||
import requests
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
async def get_latest_match(steamidtre: int):
|
||||
print("[OpenDota] Getting latest match for: {steamid}".format(steamid=steamidtre))
|
||||
r = await loop.run_in_executor(None, requests.get, 'https://api.opendota.com/api/players/{steamidtre}/matches?limit=1'.format(steamidtre=steamidtre))
|
||||
if r.status_code == 200:
|
||||
pj = r.json()
|
||||
return pj[0]
|
||||
else:
|
||||
raise Exception("OpenDota request error")
|
|
@ -39,4 +39,7 @@ league_roman_list = ["I",
|
|||
league_level_up = "{player} è salito al livello **{level}** su _League of Legends_!"
|
||||
|
||||
# Brawlhalla: new MMR
|
||||
brawlhalla_new_mmr = "{player} è passato da {oldmmr} MMR a **{mmr}** MMR su _Brawlhalla_!"
|
||||
brawlhalla_new_mmr = "{player} è passato da {oldmmr} MMR a **{mmr}** MMR su _Brawlhalla_!"
|
||||
|
||||
# Dota: new match
|
||||
dota_new_match = "{player} ha finito una partita a _Dota 2_ con {k}/{d}/{a}!"
|
Loading…
Reference in a new issue