mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Made some improvements
This commit is contained in:
parent
32eb09dace
commit
f5fa2692a0
2 changed files with 40 additions and 58 deletions
91
database.py
91
database.py
|
@ -61,6 +61,42 @@ class LoL(Base):
|
||||||
return f"<LoL {self.id} {self.summoner_name}>"
|
return f"<LoL {self.id} {self.summoner_name}>"
|
||||||
|
|
||||||
|
|
||||||
|
async def update_data(self):
|
||||||
|
try:
|
||||||
|
soloq, flexq, ttq = await lol.get_rank_data("euw", self.id)
|
||||||
|
except lol.LoLAPIError as e:
|
||||||
|
# LoL returns 404 if the account is unranked
|
||||||
|
if e.status_code == 404:
|
||||||
|
self.soloq_tier = None
|
||||||
|
self.soloq_division = None
|
||||||
|
self.flexq_tier = None
|
||||||
|
self.flexq_division = None
|
||||||
|
self.ttq_tier = None
|
||||||
|
self.ttq_division = None
|
||||||
|
else:
|
||||||
|
# Update the user data
|
||||||
|
if soloq is not None:
|
||||||
|
self.soloq_tier = lol.tiers.index(soloq["tier"])
|
||||||
|
self.soloq_division = lol.divisions.index(soloq["entries"][0]["division"])
|
||||||
|
else:
|
||||||
|
self.soloq_tier = None
|
||||||
|
self.soloq_division = None
|
||||||
|
if flexq is not None:
|
||||||
|
self.flexq_tier = lol.tiers.index(flexq["tier"])
|
||||||
|
self.flexq_division = lol.divisions.index(flexq["entries"][0]["division"])
|
||||||
|
else:
|
||||||
|
self.flexq_tier = None
|
||||||
|
self.flexq_division = None
|
||||||
|
if ttq is not None:
|
||||||
|
self.ttq_tier = lol.tiers.index(ttq["tier"])
|
||||||
|
self.ttq_division = lol.divisions.index(ttq["entries"][0]["division"])
|
||||||
|
else:
|
||||||
|
self.ttq_tier = None
|
||||||
|
self.ttq_division = None
|
||||||
|
# Mark the user as updated
|
||||||
|
self.last_updated = datetime.datetime.now()
|
||||||
|
|
||||||
|
|
||||||
def generate_discord_embed(self):
|
def generate_discord_embed(self):
|
||||||
embed = discord.Embed(type="rich")
|
embed = discord.Embed(type="rich")
|
||||||
# TODO: change the icon
|
# TODO: change the icon
|
||||||
|
@ -77,6 +113,7 @@ class LoL(Base):
|
||||||
embed.colour = discord.Colour(0x09AEBB)
|
embed.colour = discord.Colour(0x09AEBB)
|
||||||
return embed
|
return embed
|
||||||
|
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,57 +141,3 @@ def new_diario_entry(dt, text):
|
||||||
session.add(entry)
|
session.add(entry)
|
||||||
# Commit the change
|
# Commit the change
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
# TODO: this can be moved to a method of the LoL class
|
|
||||||
async def update_lol(discord_id):
|
|
||||||
# Create a new database session
|
|
||||||
session = Session()
|
|
||||||
# Find the user
|
|
||||||
user = session.query(Account).filter_by(id=discord_id).join(LoL).first()
|
|
||||||
# TODO: ewww
|
|
||||||
for account in user.lol:
|
|
||||||
# Find the League of Legends ID
|
|
||||||
lid = account.id
|
|
||||||
# Poll the League API for more information
|
|
||||||
data = await lol.get_summoner_data("euw", summoner_id=lid)
|
|
||||||
# Change tracker: if anything meaningful changes, set this to True
|
|
||||||
changes = False
|
|
||||||
# Update the user data
|
|
||||||
account.summoner_name = data["name"]
|
|
||||||
account.level = data["summonerLevel"]
|
|
||||||
# Poll the League API for ranked data
|
|
||||||
try:
|
|
||||||
soloq, flexq, ttq = await lol.get_rank_data("euw", lid)
|
|
||||||
except lol.LoLAPIError as e:
|
|
||||||
if e.status_code == 404:
|
|
||||||
account.soloq_tier = None
|
|
||||||
account.soloq_division = None
|
|
||||||
account.flexq_tier = None
|
|
||||||
account.flexq_division = None
|
|
||||||
account.ttq_tier = None
|
|
||||||
account.ttq_division = None
|
|
||||||
else:
|
|
||||||
# Update the user data
|
|
||||||
if soloq is not None:
|
|
||||||
account.soloq_tier = lol.tiers.index(soloq["tier"])
|
|
||||||
account.soloq_division = lol.divisions.index(soloq["entries"][0]["division"])
|
|
||||||
else:
|
|
||||||
account.soloq_tier = None
|
|
||||||
account.soloq_division = None
|
|
||||||
if flexq is not None:
|
|
||||||
account.flexq_tier = lol.tiers.index(flexq["tier"])
|
|
||||||
account.flexq_division = lol.divisions.index(flexq["entries"][0]["division"])
|
|
||||||
else:
|
|
||||||
account.flexq_tier = None
|
|
||||||
account.flexq_division = None
|
|
||||||
if ttq is not None:
|
|
||||||
account.ttq_tier = lol.tiers.index(ttq["tier"])
|
|
||||||
account.ttq_division = lol.divisions.index(ttq["entries"][0]["division"])
|
|
||||||
else:
|
|
||||||
account.ttq_tier = None
|
|
||||||
account.ttq_division = None
|
|
||||||
# Mark the user as updated
|
|
||||||
account.last_updated = datetime.datetime.now()
|
|
||||||
# Commit the changes
|
|
||||||
session.commit()
|
|
|
@ -285,9 +285,9 @@ Sintassi: `{symbol}synclol <nome evocatore>`"""
|
||||||
# Commit the changes to the database
|
# Commit the changes to the database
|
||||||
session.commit()
|
session.commit()
|
||||||
# Update the newly added user
|
# Update the newly added user
|
||||||
await database.update_lol(thing.author.id)
|
lolaccount.update_data()
|
||||||
# Send some info to Discord
|
# Send some info to Discord
|
||||||
await d.client.send_message(thing.channel, "Successfully connected: ", embed=lolaccount.generate_discord_embed())
|
await d.client.send_message(thing.channel, "Connessione riuscita!", embed=lolaccount.generate_discord_embed())
|
||||||
|
|
||||||
|
|
||||||
async def job_updatelol(singletimeout=1, alltimeout=300):
|
async def job_updatelol(singletimeout=1, alltimeout=300):
|
||||||
|
@ -299,12 +299,11 @@ async def job_updatelol(singletimeout=1, alltimeout=300):
|
||||||
users = session.query(database.LoL).all()
|
users = session.query(database.LoL).all()
|
||||||
# Update all the users' stats
|
# Update all the users' stats
|
||||||
for user in users:
|
for user in users:
|
||||||
await database.update_lol(user.parent_id)
|
await user.update_data()
|
||||||
await asyncio.sleep(singletimeout)
|
await asyncio.sleep(singletimeout)
|
||||||
await asyncio.sleep(alltimeout)
|
await asyncio.sleep(alltimeout)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Init universal bot commands
|
# Init universal bot commands
|
||||||
b.commands["diario"] = diario
|
b.commands["diario"] = diario
|
||||||
|
|
Loading…
Reference in a new issue