mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
EVERYTHING works
This commit is contained in:
parent
72b7ed2276
commit
9f5f6f8fea
3 changed files with 40 additions and 33 deletions
31
database.py
31
database.py
|
@ -1,5 +1,6 @@
|
||||||
import datetime
|
import datetime
|
||||||
import sqlalchemy.exc
|
import sqlalchemy.exc
|
||||||
|
import discord
|
||||||
from sqlalchemy import create_engine, Column, Integer, String, Boolean, DateTime, ForeignKey
|
from sqlalchemy import create_engine, Column, Integer, String, Boolean, DateTime, ForeignKey
|
||||||
from sqlalchemy.orm import sessionmaker, relationship
|
from sqlalchemy.orm import sessionmaker, relationship
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
@ -44,7 +45,7 @@ class LoL(Base):
|
||||||
__tablename__ = "lol"
|
__tablename__ = "lol"
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
parentid = Column(Integer, ForeignKey("account.id"))
|
parent_id = Column(Integer, ForeignKey("account.id"))
|
||||||
|
|
||||||
last_updated = Column(DateTime)
|
last_updated = Column(DateTime)
|
||||||
summoner_name = Column(String, nullable=False)
|
summoner_name = Column(String, nullable=False)
|
||||||
|
@ -60,6 +61,22 @@ class LoL(Base):
|
||||||
return f"<LoL {self.id} {self.summoner_name}>"
|
return f"<LoL {self.id} {self.summoner_name}>"
|
||||||
|
|
||||||
|
|
||||||
|
def generate_discord_embed(self):
|
||||||
|
embed = discord.Embed(type="rich")
|
||||||
|
# TODO: change the icon
|
||||||
|
embed.set_author(name="League of Legends", url="http://euw.leagueoflegends.com/", icon_url="https://cdn.discordapp.com/attachments/152150752523976704/307558194824216578/icon.png")
|
||||||
|
embed.add_field(name="Summoner", value=str(self.summoner_name))
|
||||||
|
embed.add_field(name="Level", value=str(self.level))
|
||||||
|
if self.soloq_tier is not None:
|
||||||
|
embed.add_field(name="Solo/duo SR", value=f"{lol.tiers[self.soloq_tier].capitalize()} {lol.divisions[self.soloq_division]}", inline=False)
|
||||||
|
embed.set_thumbnail(url=f"https://royal.steffo.me/loltiers/{lol.tiers[self.soloq_tier].lower()}_{lol.divisions[self.soloq_division].lower()}.png")
|
||||||
|
if self.flexq_tier is not None:
|
||||||
|
embed.add_field(name="Flex SR", value=f"{lol.tiers[self.flexq_tier].capitalize()} {lol.divisions[self.flexq_division]}", inline=False)
|
||||||
|
if self.ttq_tier is not None:
|
||||||
|
embed.add_field(name="Twisted Treeline", value=f"{lol.tiers[self.ttq_tier].capitalize()} {lol.divisions[self.ttq_division]}", inline=False)
|
||||||
|
embed.colour = discord.Colour(0x09AEBB)
|
||||||
|
return embed
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
||||||
|
|
||||||
|
@ -106,20 +123,20 @@ async def update_lol(discord_id):
|
||||||
soloq, flexq, ttq = await lol.get_rank_data("euw", lid)
|
soloq, flexq, ttq = await lol.get_rank_data("euw", lid)
|
||||||
# Update the user data
|
# Update the user data
|
||||||
if soloq is not None:
|
if soloq is not None:
|
||||||
account.soloq_tier = lol.tiers[soloq["tier"]]
|
account.soloq_tier = lol.tiers.index(soloq["tier"])
|
||||||
account.soloq_division = lol.divisions[soloq["entries"][0]["division"]]
|
account.soloq_division = lol.divisions.index(soloq["entries"][0]["division"])
|
||||||
else:
|
else:
|
||||||
account.soloq_tier = None
|
account.soloq_tier = None
|
||||||
account.soloq_division = None
|
account.soloq_division = None
|
||||||
if flexq is not None:
|
if flexq is not None:
|
||||||
account.flexq_tier = lol.tiers[flexq["tier"]]
|
account.flexq_tier = lol.tiers.index(flexq["tier"])
|
||||||
account.flexq_division = lol.divisions[flexq["entries"][0]["division"]]
|
account.flexq_division = lol.divisions.index(flexq["entries"][0]["division"])
|
||||||
else:
|
else:
|
||||||
account.flexq_tier = None
|
account.flexq_tier = None
|
||||||
account.flexq_division = None
|
account.flexq_division = None
|
||||||
if ttq is not None:
|
if ttq is not None:
|
||||||
account.ttq_tier = lol.tiers[ttq["tier"]]
|
account.ttq_tier = lol.tiers.index(ttq["tier"])
|
||||||
account.ttq_division = lol.divisions[ttq["entries"][0]["division"]]
|
account.ttq_division = lol.divisions.index(ttq["entries"][0]["division"])
|
||||||
else:
|
else:
|
||||||
account.ttq_tier = None
|
account.ttq_tier = None
|
||||||
account.ttq_division = None
|
account.ttq_division = None
|
||||||
|
|
19
lol.py
19
lol.py
|
@ -8,23 +8,10 @@ class LoLAPIError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
tiers = {
|
tiers = ["BRONZE", "SILVER", "GOLD", "PLATINUM", "DIAMOND", "MASTER", "CHALLENGER"]
|
||||||
"BRONZE": 0,
|
|
||||||
"SILVER": 1,
|
|
||||||
"GOLD": 2,
|
|
||||||
"PLATINUM": 3,
|
|
||||||
"DIAMOND": 4,
|
|
||||||
"MASTER": 5,
|
|
||||||
"CHALLENGER": 6
|
|
||||||
}
|
|
||||||
|
|
||||||
divisions = {
|
|
||||||
"I": 0,
|
divisions = ["I", "II", "III", "IV", "V"]
|
||||||
"II": 1,
|
|
||||||
"III": 2,
|
|
||||||
"IV": 3,
|
|
||||||
"V": 4
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async def get_json(url, **kwargs):
|
async def get_json(url, **kwargs):
|
||||||
|
|
23
royalbot.py
23
royalbot.py
|
@ -254,7 +254,7 @@ Sintassi: `{symbol}syncdiscord`"""
|
||||||
|
|
||||||
|
|
||||||
# DISCORD ONLY!
|
# DISCORD ONLY!
|
||||||
async def synclol(bot, thing, arguments):
|
async def synclol(bot, thing: extradiscord.discord.Message, arguments):
|
||||||
"""Connetti il tuo account di LoL all'account Royal Games!
|
"""Connetti il tuo account di LoL all'account Royal Games!
|
||||||
|
|
||||||
Sintassi: `{symbol}synclol <nome evocatore>`"""
|
Sintassi: `{symbol}synclol <nome evocatore>`"""
|
||||||
|
@ -271,20 +271,23 @@ Sintassi: `{symbol}synclol <nome evocatore>`"""
|
||||||
if user is None:
|
if user is None:
|
||||||
await answer(bot, thing, "⚠ Fai il login prima di sincronizzare l'account di LoL.")
|
await answer(bot, thing, "⚠ Fai il login prima di sincronizzare l'account di LoL.")
|
||||||
return
|
return
|
||||||
# Create a new LoL account and link it to the user
|
# Check if there are other LoL account registered with the user
|
||||||
# TODO: IMPROVE THIS
|
user = session.query(database.Account).filter_by(id=thing.author.id).join(database.LoL).all()
|
||||||
|
if len(user) > 0:
|
||||||
|
await answer(bot, thing, "⚠ Hai già un account connesso.\n_Se stai cercando di registrare uno smurf, chiedi a Steffo._")
|
||||||
|
# Get data about the user
|
||||||
summoner_name = " ".join(arguments)
|
summoner_name = " ".join(arguments)
|
||||||
data = await lol.get_summoner_data("euw", summoner_name=summoner_name)
|
data = await lol.get_summoner_data("euw", summoner_name=summoner_name)
|
||||||
|
# Create a new database entry for the account
|
||||||
lolaccount = database.LoL(id=data["id"], summoner_name=summoner_name)
|
lolaccount = database.LoL(id=data["id"], summoner_name=summoner_name)
|
||||||
lolaccount.parentid = user.id
|
lolaccount.parent_id = thing.author.id
|
||||||
session.add(lolaccount)
|
session.add(lolaccount)
|
||||||
|
# Commit the changes to the database
|
||||||
session.commit()
|
session.commit()
|
||||||
await database.update_lol(user.id)
|
# Update the newly added user
|
||||||
|
await database.update_lol(thing.author.id)
|
||||||
|
# Send some info to Discord
|
||||||
async def update_stats(timeout):
|
await d.client.send_message(thing.channel, embed=lolaccount.generate_discord_embed())
|
||||||
await asyncio.sleep(timeout)
|
|
||||||
loop.create_task()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Init universal bot commands
|
# Init universal bot commands
|
||||||
|
|
Loading…
Reference in a new issue