mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
commit
9a9c33ecf7
4 changed files with 56 additions and 12 deletions
41
main.py
41
main.py
|
@ -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
13
opendota.py
Normal 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")
|
9
steam.py
9
steam.py
|
@ -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
|
|
@ -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