mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Add Steam linking
This commit is contained in:
parent
160c96f310
commit
f3338c2fe9
3 changed files with 59 additions and 0 deletions
18
db.py
18
db.py
|
@ -49,6 +49,24 @@ class Telegram(Base):
|
|||
return self.first_name
|
||||
|
||||
|
||||
class Steam(Base):
|
||||
__tablename__ = "steam"
|
||||
|
||||
royal_id = Column(Integer, ForeignKey("royals.id"))
|
||||
royal = relationship("Royal")
|
||||
|
||||
steam_id = Column(String, primary_key=True)
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Steam {self.steam_id}>"
|
||||
|
||||
def __str__(self):
|
||||
if self.steam_name is not None:
|
||||
return self.steam_name
|
||||
else:
|
||||
return self.steam_id
|
||||
|
||||
|
||||
# If run as script, create all the tables in the db
|
||||
if __name__ == "__main__":
|
||||
Base.metadata.create_all(bind=engine)
|
39
steam.py
Normal file
39
steam.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
from flask import Flask
|
||||
from flask import session as flask_session
|
||||
from flask_openid import OpenID
|
||||
from db import session, Royal, Steam
|
||||
import re
|
||||
|
||||
# Init the config reader
|
||||
import configparser
|
||||
config = configparser.ConfigParser()
|
||||
config.read("config.ini")
|
||||
|
||||
# Init Flask and Flask_OpenID
|
||||
app = Flask(__name__)
|
||||
app.secret_key = config["Steam"]["secret_key"]
|
||||
oid = OpenID(app)
|
||||
|
||||
@app.route("/login/<int:royal_id>")
|
||||
@oid.loginhandler
|
||||
def page_steam_login(royal_id):
|
||||
flask_session["royal_id"] = royal_id
|
||||
return oid.try_login("http://steamcommunity.com/openid")
|
||||
|
||||
|
||||
@oid.after_login
|
||||
def page_after_login(response):
|
||||
steam_id = re.search("https?://steamcommunity\.com/openid/id/(.+)", response.identity_url).group(1)
|
||||
db_steam = session.query(Steam).filter(Steam.steam_id == steam_id).first()
|
||||
if db_steam is None:
|
||||
db_steam = Steam(royal_id=flask_session["royal_id"],
|
||||
steam_id=steam_id)
|
||||
session.add(db_steam)
|
||||
session.commit()
|
||||
return "Account Steam collegato con successo!"
|
||||
else:
|
||||
return "Il tuo account Steam è già collegato."
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=config["Steam"]["flask_port"])
|
|
@ -14,6 +14,7 @@ logging.basicConfig(level=logging.DEBUG, format="[%(levelname)s] %(asctime)s | %
|
|||
# Init the Telegram Bot
|
||||
updater = Updater(token=config["Telegram"]["bot_token"])
|
||||
|
||||
|
||||
def message_sync(bot: Bot, update: Update):
|
||||
tg_user = update.message.from_user
|
||||
db_user = session.query(Telegram).filter(Telegram.telegram_id == tg_user.id).first()
|
||||
|
@ -44,5 +45,6 @@ def message_sync(bot: Bot, update: Update):
|
|||
session.commit()
|
||||
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
|
||||
|
||||
|
||||
updater.dispatcher.add_handler(CommandHandler("sync", message_sync))
|
||||
updater.start_polling()
|
Loading…
Reference in a new issue