forked from MarseyWorld/MarseyWorld
108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
from files.__main__ import app, limiter, db_session
|
|
from files.helpers.wrappers import *
|
|
from files.helpers.actions import badge_grant
|
|
from files.helpers.alerts import *
|
|
from files.helpers.get import *
|
|
from files.helpers.const import *
|
|
from files.helpers.wrappers import *
|
|
|
|
|
|
|
|
def get_game_feed(game):
|
|
games = g.db.query(Casino_Game) \
|
|
.filter(Casino_Game.active == False, Casino_Game.kind == game) \
|
|
.order_by(Casino_Game.created_utc.desc()).limit(30).all()
|
|
|
|
def format_game(game):
|
|
user = g.db.query(User).filter(User.id == game.user_id).one()
|
|
wonlost = 'lost' if game.winnings < 0 else 'won'
|
|
relevant_currency = "coin" if game.currency == "coins" else "marseybux"
|
|
|
|
return {
|
|
"user": user.username,
|
|
"won_or_lost": wonlost,
|
|
"amount": abs(game.winnings),
|
|
"currency": relevant_currency
|
|
}
|
|
|
|
return list(map(format_game, games))
|
|
|
|
|
|
def get_game_leaderboard(game):
|
|
timestamp_24h_ago = time.time() - 86400
|
|
timestamp_all_time = 1662825600 # "All Time" starts on release day
|
|
|
|
biggest_win_all_time = g.db.query(Casino_Game.user_id, User.username, Casino_Game.currency, Casino_Game.winnings).select_from(
|
|
Casino_Game).join(User).order_by(Casino_Game.winnings.desc()).filter(Casino_Game.kind == game, Casino_Game.created_utc > timestamp_all_time).limit(1).one_or_none()
|
|
|
|
biggest_win_last_24h = g.db.query(Casino_Game.user_id, User.username, Casino_Game.currency, Casino_Game.winnings).select_from(
|
|
Casino_Game).join(User).order_by(Casino_Game.winnings.desc()).filter(Casino_Game.kind == game, Casino_Game.created_utc > timestamp_24h_ago).limit(1).one_or_none()
|
|
|
|
biggest_loss_all_time = g.db.query(Casino_Game.user_id, User.username, Casino_Game.currency, Casino_Game.winnings).select_from(
|
|
Casino_Game).join(User).order_by(Casino_Game.winnings.asc()).filter(Casino_Game.kind == game, Casino_Game.created_utc > timestamp_all_time).limit(1).one_or_none()
|
|
|
|
biggest_loss_last_24h = g.db.query(Casino_Game.user_id, User.username, Casino_Game.currency, Casino_Game.winnings).select_from(
|
|
Casino_Game).join(User).order_by(Casino_Game.winnings.asc()).filter(Casino_Game.kind == game, Casino_Game.created_utc > timestamp_24h_ago).limit(1).one_or_none()
|
|
|
|
if not biggest_win_all_time:
|
|
biggest_win_all_time = [None, None, None, 0]
|
|
|
|
if not biggest_win_last_24h:
|
|
biggest_win_last_24h = [None, None, None, 0]
|
|
|
|
if not biggest_loss_all_time:
|
|
biggest_loss_all_time = [None, None, None, 0]
|
|
|
|
if not biggest_loss_last_24h:
|
|
biggest_loss_last_24h = [None, None, None, 0]
|
|
|
|
|
|
return {
|
|
"all_time": {
|
|
"biggest_win": {
|
|
"user": biggest_win_all_time[1],
|
|
"currency": biggest_win_all_time[2],
|
|
"amount": biggest_win_all_time[3]
|
|
},
|
|
"biggest_loss": {
|
|
"user": biggest_loss_all_time[1],
|
|
"currency": biggest_loss_all_time[2],
|
|
"amount": abs(biggest_loss_all_time[3])
|
|
}
|
|
},
|
|
"last_24h": {
|
|
"biggest_win": {
|
|
"user": biggest_win_last_24h[1],
|
|
"currency": biggest_win_last_24h[2],
|
|
"amount": biggest_win_last_24h[3]
|
|
},
|
|
"biggest_loss": {
|
|
"user": biggest_loss_last_24h[1],
|
|
"currency": biggest_loss_last_24h[2],
|
|
"amount": abs(biggest_loss_last_24h[3])
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
def distribute_wager_badges(user, wager, won):
|
|
badges_earned = []
|
|
|
|
if won:
|
|
if wager >= 1000:
|
|
badges_earned.append(160)
|
|
if wager >= 10000:
|
|
badges_earned.append(161)
|
|
if wager >= 100000:
|
|
badges_earned.append(162)
|
|
else:
|
|
if wager >= 1000:
|
|
badges_earned.append(157)
|
|
if wager >= 10000:
|
|
badges_earned.append(158)
|
|
if wager >= 100000:
|
|
badges_earned.append(159)
|
|
|
|
for badge in badges_earned:
|
|
badge_grant(user, badge)
|