1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00

EVERYTHING works

This commit is contained in:
Steffo 2017-04-28 18:54:20 +02:00
parent 72b7ed2276
commit 9f5f6f8fea
3 changed files with 40 additions and 33 deletions

View file

@ -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
View file

@ -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):

View file

@ -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