mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +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 asyncio
|
||||||
import discord
|
import discord
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
import opendota
|
||||||
import overwatch
|
import overwatch
|
||||||
import league
|
import league
|
||||||
import strings as s
|
import strings as s
|
||||||
|
@ -215,7 +217,7 @@ async def brawlhalla_update_mmr(timeout):
|
||||||
# Compare the mmr with the value saved in the database
|
# Compare the mmr with the value saved in the database
|
||||||
if mmr != old_mmr:
|
if mmr != old_mmr:
|
||||||
# Send a message
|
# 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
|
# Update database
|
||||||
db[player]["brawlhalla"]["mmr"] = mmr
|
db[player]["brawlhalla"]["mmr"] = mmr
|
||||||
f = open("db.json", "w")
|
f = open("db.json", "w")
|
||||||
|
@ -229,6 +231,40 @@ async def brawlhalla_update_mmr(timeout):
|
||||||
else:
|
else:
|
||||||
await asyncio.sleep(1)
|
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
|
# 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
|
||||||
|
@ -251,7 +287,6 @@ async def send_event(eventmsg: str, player: str, **kwargs):
|
||||||
# Send the message
|
# Send the message
|
||||||
loop.create_task(telegram.send_message(msg, -2141322))
|
loop.create_task(telegram.send_message(msg, -2141322))
|
||||||
|
|
||||||
|
|
||||||
loop.create_task(overwatch_status_change(600))
|
loop.create_task(overwatch_status_change(600))
|
||||||
print("[Overwatch] Added level up check to the queue.")
|
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))
|
loop.create_task(brawlhalla_update_mmr(7200))
|
||||||
print("[Brawlhalla] Added mmr change check to the queue.")
|
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:
|
try:
|
||||||
loop.run_until_complete(d_client.start(token))
|
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
|
|
|
@ -40,3 +40,6 @@ league_level_up = "{player} è salito al livello **{level}** su _League of Legen
|
||||||
|
|
||||||
# Brawlhalla: new MMR
|
# 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