User.pay_account everywhere, fix lottery payout.
parent
858ccab4ec
commit
db329f487f
|
@ -159,7 +159,7 @@ def execute_snappy(post, v):
|
||||||
check_slots_command(v, snappy, c)
|
check_slots_command(v, snappy, c)
|
||||||
|
|
||||||
snappy.comment_count += 1
|
snappy.comment_count += 1
|
||||||
snappy.coins += 1
|
snappy.pay_account('coins', 1)
|
||||||
g.db.add(snappy)
|
g.db.add(snappy)
|
||||||
|
|
||||||
if FEATURES['PINS'] and (body.startswith(':#marseypin:') or body.startswith(':#marseypin2:')):
|
if FEATURES['PINS'] and (body.startswith(':#marseypin:') or body.startswith(':#marseypin2:')):
|
||||||
|
@ -241,7 +241,7 @@ def execute_zozbot(c, level, parent_submission, v):
|
||||||
|
|
||||||
zozbot = get_account(ZOZBOT_ID)
|
zozbot = get_account(ZOZBOT_ID)
|
||||||
zozbot.comment_count += 3
|
zozbot.comment_count += 3
|
||||||
zozbot.coins += 3
|
zozbot.pay_account('coins', 1)
|
||||||
g.db.add(zozbot)
|
g.db.add(zozbot)
|
||||||
|
|
||||||
def execute_longpostbot(c, level, body, body_html, parent_submission, v):
|
def execute_longpostbot(c, level, body, body_html, parent_submission, v):
|
||||||
|
@ -273,7 +273,7 @@ def execute_longpostbot(c, level, body, body_html, parent_submission, v):
|
||||||
|
|
||||||
longpostbot = get_account(LONGPOSTBOT_ID)
|
longpostbot = get_account(LONGPOSTBOT_ID)
|
||||||
longpostbot.comment_count += 1
|
longpostbot.comment_count += 1
|
||||||
longpostbot.coins += 1
|
longpostbot.pay_account('coins', 1)
|
||||||
g.db.add(longpostbot)
|
g.db.add(longpostbot)
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
n = Notification(comment_id=c2.id, user_id=v.id)
|
n = Notification(comment_id=c2.id, user_id=v.id)
|
||||||
|
|
|
@ -120,9 +120,9 @@ def _give_monthly_marseybux_task():
|
||||||
emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["subscribers"]]
|
emails = [x['email'] for x in requests.get(f'https://api.gumroad.com/v2/products/{GUMROAD_ID}/subscribers', data=data, timeout=5).json()["subscribers"]]
|
||||||
|
|
||||||
def give_procoins(u):
|
def give_procoins(u):
|
||||||
procoins = procoins_li[u.patron]
|
procoins_reward = procoins_li[u.patron]
|
||||||
u.procoins += procoins
|
u.pay_account('procoins', procoins_reward)
|
||||||
send_repeatable_notification(u.id, f"@AutoJanny has given you {procoins} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(u.id, f"@AutoJanny has given you {procoins_reward} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).")
|
||||||
|
|
||||||
for badge in g.db.query(Badge).filter(Badge.badge_id > 20, Badge.badge_id < 28).all():
|
for badge in g.db.query(Badge).filter(Badge.badge_id > 20, Badge.badge_id < 28).all():
|
||||||
g.db.delete(badge)
|
g.db.delete(badge)
|
||||||
|
@ -173,9 +173,9 @@ def _give_monthly_marseybux_task_kofi():
|
||||||
u.patron = 0
|
u.patron = 0
|
||||||
continue
|
continue
|
||||||
|
|
||||||
procoins = procoins_li[u.patron]
|
procoins_reward = procoins_li[u.patron]
|
||||||
u.procoins += procoins
|
u.pay_account('procoins', procoins_reward)
|
||||||
send_repeatable_notification(u.id, f"@AutoJanny has given you {procoins} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(u.id, f"@AutoJanny has given you {procoins_reward} Marseybux for the month of {month}! You can use them to buy awards in the [shop](/shop).")
|
||||||
|
|
||||||
ma = ModAction(
|
ma = ModAction(
|
||||||
kind="monthly",
|
kind="monthly",
|
||||||
|
|
|
@ -48,7 +48,7 @@ def end_lottery_session():
|
||||||
winner = choice(raffle)
|
winner = choice(raffle)
|
||||||
active_lottery.winner_id = winner
|
active_lottery.winner_id = winner
|
||||||
winning_user = next(filter(lambda x: x.id == winner, participating_users))
|
winning_user = next(filter(lambda x: x.id == winner, participating_users))
|
||||||
winning_user.coins += active_lottery.prize
|
winning_user.pay_account('coins', active_lottery.prize)
|
||||||
winning_user.total_lottery_winnings += active_lottery.prize
|
winning_user.total_lottery_winnings += active_lottery.prize
|
||||||
badge_grant(user=winning_user, badge_id=LOTTERY_WINNER_BADGE_ID)
|
badge_grant(user=winning_user, badge_id=LOTTERY_WINNER_BADGE_ID)
|
||||||
|
|
||||||
|
@ -65,6 +65,10 @@ def end_lottery_session():
|
||||||
|
|
||||||
active_lottery.is_active = False
|
active_lottery.is_active = False
|
||||||
|
|
||||||
|
g.db.add(winning_user)
|
||||||
|
g.db.add(active_lottery)
|
||||||
|
g.db.commit() # Intentionally commit early because cron runs with other tasks
|
||||||
|
|
||||||
return True, f'{winning_user.username} won {active_lottery.prize} coins!'
|
return True, f'{winning_user.username} won {active_lottery.prize} coins!'
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,6 +84,7 @@ def start_new_lottery_session():
|
||||||
lottery.is_active = True
|
lottery.is_active = True
|
||||||
|
|
||||||
g.db.add(lottery)
|
g.db.add(lottery)
|
||||||
|
g.db.commit() # Intentionally commit early, not autocommitted from cron
|
||||||
|
|
||||||
|
|
||||||
def check_if_end_lottery_task():
|
def check_if_end_lottery_task():
|
||||||
|
|
|
@ -42,6 +42,5 @@ def check_for_treasure(in_text, from_comment):
|
||||||
from_comment.treasure_amount = f'l{ticket_count}'
|
from_comment.treasure_amount = f'l{ticket_count}'
|
||||||
return
|
return
|
||||||
|
|
||||||
|
user.pay_account('coins', amount)
|
||||||
user.coins += amount
|
|
||||||
from_comment.treasure_amount = str(amount)
|
from_comment.treasure_amount = str(amount)
|
||||||
|
|
|
@ -24,7 +24,7 @@ from .front import frontlist
|
||||||
def kippy(v):
|
def kippy(v):
|
||||||
if SITE != 'pcmemes.net': abort(404)
|
if SITE != 'pcmemes.net': abort(404)
|
||||||
kippy = get_account(KIPPY_ID)
|
kippy = get_account(KIPPY_ID)
|
||||||
kippy.procoins += 10000
|
kippy.pay_account('procoins', 10000)
|
||||||
g.db.add(kippy)
|
g.db.add(kippy)
|
||||||
return '10k marseybux printed!'
|
return '10k marseybux printed!'
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ def distribute(v, option_id):
|
||||||
cid = notif_comment(f"You won {coinsperperson} coins betting on [{post.title}]({post.shortlink}) :marseyparty:")
|
cid = notif_comment(f"You won {coinsperperson} coins betting on [{post.title}]({post.shortlink}) :marseyparty:")
|
||||||
for vote in votes:
|
for vote in votes:
|
||||||
u = vote.user
|
u = vote.user
|
||||||
u.coins += coinsperperson
|
u.pay_account('coins', coinsperperson)
|
||||||
add_notif(cid, u.id)
|
add_notif(cid, u.id)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1188,7 +1188,7 @@ def remove_post(post_id, v):
|
||||||
|
|
||||||
cache.delete_memoized(frontlist)
|
cache.delete_memoized(frontlist)
|
||||||
|
|
||||||
v.coins += 1
|
v.pay_account('coins', 1)
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
purge_files_in_cache(f"https://{SITE}/")
|
purge_files_in_cache(f"https://{SITE}/")
|
||||||
return {"message": "Post removed!"}
|
return {"message": "Post removed!"}
|
||||||
|
|
|
@ -153,7 +153,7 @@ def approve_marsey(v, name):
|
||||||
new_path = f'/asset_submissions/marseys/original/{name}.{i.format.lower()}'
|
new_path = f'/asset_submissions/marseys/original/{name}.{i.format.lower()}'
|
||||||
rename(highquality, new_path)
|
rename(highquality, new_path)
|
||||||
|
|
||||||
author.coins += 250
|
author.pay_account('coins', 250)
|
||||||
g.db.add(author)
|
g.db.add(author)
|
||||||
|
|
||||||
if v.id != author.id:
|
if v.id != author.id:
|
||||||
|
|
|
@ -201,7 +201,7 @@ def award_thing(v, thing_type, id):
|
||||||
elif kind != 'spider':
|
elif kind != 'spider':
|
||||||
awarded_coins = int(AWARDS[kind]['price'] * COSMETIC_AWARD_COIN_AWARD_PCT) if AWARDS[kind]['cosmetic'] else 0
|
awarded_coins = int(AWARDS[kind]['price'] * COSMETIC_AWARD_COIN_AWARD_PCT) if AWARDS[kind]['cosmetic'] else 0
|
||||||
if AWARDS[kind]['cosmetic']:
|
if AWARDS[kind]['cosmetic']:
|
||||||
author.coins += awarded_coins
|
author.pay_account('coins', awarded_coins)
|
||||||
|
|
||||||
msg = f"@{v.username} has given your [{thing_type}]({thing.shortlink}) the {AWARDS[kind]['title']} Award"
|
msg = f"@{v.username} has given your [{thing_type}]({thing.shortlink}) the {AWARDS[kind]['title']} Award"
|
||||||
if awarded_coins > 0:
|
if awarded_coins > 0:
|
||||||
|
@ -331,7 +331,7 @@ def award_thing(v, thing_type, id):
|
||||||
author.patron = 1
|
author.patron = 1
|
||||||
if author.patron_utc: author.patron_utc += 2629746
|
if author.patron_utc: author.patron_utc += 2629746
|
||||||
else: author.patron_utc = int(time.time()) + 2629746
|
else: author.patron_utc = int(time.time()) + 2629746
|
||||||
author.procoins += 2500
|
author.pay_account('procoins', 2500)
|
||||||
badge_grant(user=v, badge_id=103)
|
badge_grant(user=v, badge_id=103)
|
||||||
elif kind == "rehab":
|
elif kind == "rehab":
|
||||||
if author.rehab: author.rehab += 86400
|
if author.rehab: author.rehab += 86400
|
||||||
|
|
|
@ -51,14 +51,14 @@ def buy_hat(v, hat_id):
|
||||||
charged = v.charge_account('procoins', hat.price)
|
charged = v.charge_account('procoins', hat.price)
|
||||||
if not charged: abort(400, "Not enough marseybux.")
|
if not charged: abort(400, "Not enough marseybux.")
|
||||||
|
|
||||||
hat.author.procoins += hat.price * 0.1
|
hat.author.pay_account('procoins', hat.price * 0.1)
|
||||||
currency = "marseybux"
|
currency = "marseybux"
|
||||||
else:
|
else:
|
||||||
charged = v.charge_account('coins', hat.price)
|
charged = v.charge_account('coins', hat.price)
|
||||||
if not charged: abort(400, "Not enough coins.")
|
if not charged: abort(400, "Not enough coins.")
|
||||||
|
|
||||||
v.coins_spent_on_hats += hat.price
|
v.coins_spent_on_hats += hat.price
|
||||||
hat.author.coins += hat.price * 0.1
|
hat.author.pay_account('coins', hat.price * 0.1)
|
||||||
currency = "coins"
|
currency = "coins"
|
||||||
|
|
||||||
new_hat = Hat(user_id=v.id, hat_id=hat.id)
|
new_hat = Hat(user_id=v.id, hat_id=hat.id)
|
||||||
|
|
|
@ -24,7 +24,7 @@ def vote_option(option_id, v):
|
||||||
abort(400, f"You don't have {POLL_BET_COINS} coins!")
|
abort(400, f"You don't have {POLL_BET_COINS} coins!")
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
autojanny = get_account(AUTOJANNY_ID)
|
autojanny = get_account(AUTOJANNY_ID)
|
||||||
autojanny.coins += POLL_BET_COINS
|
autojanny.pay_account('coins', POLL_BET_COINS)
|
||||||
g.db.add(autojanny)
|
g.db.add(autojanny)
|
||||||
|
|
||||||
if option.exclusive:
|
if option.exclusive:
|
||||||
|
|
|
@ -366,7 +366,7 @@ def gumroad(v):
|
||||||
|
|
||||||
v.patron = tier
|
v.patron = tier
|
||||||
|
|
||||||
v.procoins += procoins
|
v.pay_account('procoins', procoins)
|
||||||
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
||||||
|
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
|
@ -302,9 +302,9 @@ def transfer_currency(v:User, username:str, currency_name:Literal['coins', 'proc
|
||||||
|
|
||||||
if not v.shadowbanned:
|
if not v.shadowbanned:
|
||||||
if currency_name == 'procoins':
|
if currency_name == 'procoins':
|
||||||
receiver.procoins += amount - tax
|
receiver.pay_account('procoins', amount - tax)
|
||||||
elif currency_name == 'coins':
|
elif currency_name == 'coins':
|
||||||
receiver.coins += amount - tax
|
receiver.pay_account('coins', amount - tax)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Invalid currency '{currency_name}' got when transferring {amount} from {v.id} to {receiver.id}")
|
raise ValueError(f"Invalid currency '{currency_name}' got when transferring {amount} from {v.id} to {receiver.id}")
|
||||||
g.db.add(receiver)
|
g.db.add(receiver)
|
||||||
|
@ -1108,7 +1108,7 @@ def settings_kofi(v):
|
||||||
tier = kofi_tiers[transaction.amount]
|
tier = kofi_tiers[transaction.amount]
|
||||||
|
|
||||||
procoins = procoins_li[tier]
|
procoins = procoins_li[tier]
|
||||||
v.procoins += procoins
|
v.pay_account('procoins', procoins)
|
||||||
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
send_repeatable_notification(v.id, f"You have received {procoins} Marseybux! You can use them to buy awards in the [shop](/shop).")
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ def vote_post_comment(target_id, new, v, cls, vote_cls):
|
||||||
if existing and existing.vote_type == new: return "", 204
|
if existing and existing.vote_type == new: return "", 204
|
||||||
if existing:
|
if existing:
|
||||||
if existing.vote_type == 0 and new != 0:
|
if existing.vote_type == 0 and new != 0:
|
||||||
target.author.coins += coin_value
|
target.author.pay_account('coins', coin_value)
|
||||||
target.author.truescore += coin_delta
|
target.author.truescore += coin_delta
|
||||||
g.db.add(target.author)
|
g.db.add(target.author)
|
||||||
existing.vote_type = new
|
existing.vote_type = new
|
||||||
|
@ -97,7 +97,7 @@ def vote_post_comment(target_id, new, v, cls, vote_cls):
|
||||||
existing.vote_type = new
|
existing.vote_type = new
|
||||||
g.db.add(existing)
|
g.db.add(existing)
|
||||||
elif new != 0:
|
elif new != 0:
|
||||||
target.author.coins += coin_value
|
target.author.pay_account('coins', coin_value)
|
||||||
target.author.truescore += coin_delta
|
target.author.truescore += coin_delta
|
||||||
g.db.add(target.author)
|
g.db.add(target.author)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue