1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

Merge pull request #1 from Steffo99/dotatest

Dotatest
This commit is contained in:
Steffo 2016-12-06 22:35:38 +01:00 committed by GitHub
commit 9a9c33ecf7
4 changed files with 56 additions and 12 deletions

41
main.py
View file

@ -1,6 +1,8 @@
import asyncio
import discord
import json
import opendota
import overwatch
import league
import strings as s
@ -215,7 +217,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 +231,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(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 +287,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.")
@ -264,6 +299,8 @@ print("[League] Added level change check to the queue.")
loop.create_task(brawlhalla_update_mmr(7200))
print("[Brawlhalla] Added mmr change check to the queue.")
#loop.create_task(opendota_last_match(600))
#print("[OpenDota] Added last match check to the queue.")
try:
loop.run_until_complete(d_client.start(token))

13
opendota.py Normal file
View file

@ -0,0 +1,13 @@
import asyncio
import requests
loop = asyncio.get_event_loop()
async def get_latest_match(steamidtre: str):
steamidtre = steamidtre[1:-1].split(":")[2]
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")

View file

@ -1,9 +0,0 @@
def convert_sid_1_3(steamid: int, group=False):
"""Convert SteamID1 to SteamID3"""
accuniverse = steamid % 2
if group:
acctype = 0x0170000000000000
else:
acctype = 0x0110000100000000
accid = (steamid - acctype - accuniverse) / 2
return accid

View file

@ -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}!"