mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 21:44:21 +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
|
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 run as script, create all the tables in the db
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
Base.metadata.create_all(bind=engine)
|
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
|
# Init the Telegram Bot
|
||||||
updater = Updater(token=config["Telegram"]["bot_token"])
|
updater = Updater(token=config["Telegram"]["bot_token"])
|
||||||
|
|
||||||
|
|
||||||
def message_sync(bot: Bot, update: Update):
|
def message_sync(bot: Bot, update: Update):
|
||||||
tg_user = update.message.from_user
|
tg_user = update.message.from_user
|
||||||
db_user = session.query(Telegram).filter(Telegram.telegram_id == tg_user.id).first()
|
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()
|
session.commit()
|
||||||
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
|
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
|
||||||
|
|
||||||
|
|
||||||
updater.dispatcher.add_handler(CommandHandler("sync", message_sync))
|
updater.dispatcher.add_handler(CommandHandler("sync", message_sync))
|
||||||
updater.start_polling()
|
updater.start_polling()
|
Loading…
Reference in a new issue