mirror of
https://github.com/wolfswolke/DeathGarden_API_Rebirth.git
synced 2026-03-21 17:54:09 -05:00
added steam achievement logic
This commit is contained in:
parent
524c61223d
commit
c0c663a02f
|
|
@ -11,6 +11,7 @@ from logic.time_handler import get_lifetime
|
|||
from logic.hash_handler import hash_handler
|
||||
from logic.challenge_handler_new import new_challenge_handler, get_challenge_ids_from_inventory
|
||||
from logic.level_handler import update_user_xp
|
||||
from logic.webhook_handler import webhook_handler
|
||||
import json
|
||||
import os
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from flask_definitions import *
|
|||
import random
|
||||
|
||||
from util.challenge_data import *
|
||||
from logic.webhook_handler import webhook_handler
|
||||
|
||||
|
||||
# Base pickedChallenges Item
|
||||
|
|
@ -705,6 +706,50 @@ def get_reward(blueprint):
|
|||
}
|
||||
|
||||
|
||||
def update_achievement_challenges(user_id):
|
||||
steam_id = mongo.get_data_with_list(login=user_id, login_steam=False, items={"steamid"})["steamid"]
|
||||
data = webhook_handler.steam_check_achievments(steam_id)
|
||||
if data["playerstats"]["success"]:
|
||||
achieved_achievement = []
|
||||
for achievement in data["playerstats"]["achievements"]:
|
||||
if achievement["achieved"] == 1:
|
||||
challenge_id = achievement["apiname"]
|
||||
if challenge_id == "EFAB89E6465D1163D62A07B11048F2B6":
|
||||
print(f"Completed challenge {challenge_id}, NotAQuitter")
|
||||
achieved_achievement.append({"challengeId": challenge_id, "value": 50})
|
||||
elif challenge_id == "2CAEBB354D506D7C43B941BC1DA775A0":
|
||||
print(f"Completed challenge {challenge_id}, Escapist")
|
||||
achieved_achievement.append({"challengeId": challenge_id, "value": 10})
|
||||
elif challenge_id == "E51981B946BEE3D45C5C41B2FCFF310B":
|
||||
print(f"Completed challenge {challenge_id}, SpecialDelivery")
|
||||
achieved_achievement.append({"challengeId": challenge_id, "value": 500})
|
||||
elif challenge_id == "AAD05B9D46471DC811BBE0BA91916AB7":
|
||||
print(f"Completed challenge {challenge_id}, DontBeADowner")
|
||||
achieved_achievement.append({"challengeId": challenge_id, "value": 50})
|
||||
elif challenge_id == "BA2D4A5445CB70276A8F5D9E1AFCE080":
|
||||
print(f"Completed challenge {challenge_id}, DroneZone")
|
||||
achieved_achievement.append({"challengeId": challenge_id, "value": 100})
|
||||
else:
|
||||
logger.graylog_logger(level="error", handler="update_achievement_challenges",
|
||||
message=f"Achievement Challenge {challenge_id} not found")
|
||||
if len(achieved_achievement) > 0:
|
||||
user_challenges = mongo.get_data_with_list(login=steam_id, login_steam=True, items={"challengeProgression"})["challengeProgression"]
|
||||
for achievement in achieved_achievement:
|
||||
challenge_id = achievement["challengeId"]
|
||||
value = achievement["value"]
|
||||
for challenge in user_challenges:
|
||||
if challenge["challengeId"] == challenge_id:
|
||||
challenge["completed"] = True
|
||||
challenge["value"] = value
|
||||
break
|
||||
mongo.write_data_with_list(login=steam_id, login_steam=True,
|
||||
items_dict={"challengeProgression": user_challenges})
|
||||
else:
|
||||
logger.graylog_logger(level="error", handler="update_achievement_challenges",
|
||||
message=f"Failed to get achievements for steam_id {steam_id}reason {data['playerstats']['error']}")
|
||||
|
||||
|
||||
|
||||
def get_challenge_ids_from_inventory(user_id):
|
||||
Progression_HunterGroupA = mongo.get_data_with_list(login=user_id, login_steam=False,
|
||||
items={"HunterGroupA"})["HunterGroupA"]
|
||||
|
|
@ -777,6 +822,7 @@ def get_challenge_ids_from_inventory(user_id):
|
|||
challenge_found = True
|
||||
if not challenge_found:
|
||||
new_challenge_handler.add_challenge_to_user(user_id, challenge)
|
||||
update_achievement_challenges(user_id)
|
||||
|
||||
|
||||
class ChallengeHandler:
|
||||
|
|
|
|||
|
|
@ -4,3 +4,26 @@ import requests
|
|||
def discord_webhook(urls, data):
|
||||
for url in urls:
|
||||
requests.post(url, json=data)
|
||||
|
||||
|
||||
class WebhookHandler:
|
||||
def __init__(self):
|
||||
self.steam_api_key = ""
|
||||
self.steam_app_id = ""
|
||||
self.steam_url = "https://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001"
|
||||
self.discord_webhook_url_lobby = ""
|
||||
self.discord_webhook_url_reports = ""
|
||||
|
||||
def setup(self, steam_api_key, steam_app_id):
|
||||
self.steam_api_key = steam_api_key
|
||||
self.steam_app_id = steam_app_id
|
||||
#self.discord_webhook_url_lobby = discord_webhook_url_lobby
|
||||
#self.discord_webhook_url_reports = discord_webhook_url_reports
|
||||
|
||||
def steam_check_achievments(self, steam_id):
|
||||
url = f"{self.steam_url}?appid={self.steam_app_id}&key={self.steam_api_key}&steamid={steam_id}"
|
||||
response = requests.get(url)
|
||||
return response.json()
|
||||
|
||||
|
||||
webhook_handler = WebhookHandler()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user