Files
stroopwafel/PointsInflation.py
2020-04-10 13:59:04 +02:00

55 lines
1.4 KiB
Python

import sys
import os
import numpy as np
from datetime import datetime
# Creates inflation in the points adminstration.
# This script is not directly triggered by the bot, but may be executed once per day.
# When developing on an inferior Windows machine, you'll need this:
if sys.platform == "win32":
os.EX_OK = 0
os.EX_IOERR = 5
os.EX_USAGE = 99
POINTS_FILE = "pointscount.npy"
BANK_ID = 42
# Read current points balance:
try:
pointsCount = np.load(POINTS_FILE).item()
except:
sys.stderr.write("Cannot open points file: " + POINTS_FILE)
sys.exit(os.EX_IOERR)
if BANK_ID not in pointsCount.keys():
sys.stderr.write("Cannot find the bank's balance.")
sys.exit(os.EX_IOERR)
# Make sure inflation is only executed once per day:
currentDateStr = datetime.now().strftime("%Y%m%d")
if "lastInflationUpdate" in pointsCount[BANK_ID]:
if pointsCount[BANK_ID]["lastInflationUpdate"] == currentDateStr:
sys.stderr.write("We already had some inflation today. No hyperinflation allowed!")
sys.exit(os.EX_USAGE)
# increase the bank's points by 1:
pointsCount[BANK_ID]["points"] += 1
pointsCount[BANK_ID]["lastInflationUpdate"] = currentDateStr
# save file:
try:
np.save(POINTS_FILE, pointsCount)
except:
sys.stderr.write("Cannot save to points file: " + POINTS_FILE)
sys.exit(os.EX_IOERR)
sys.stdout.write("Inflation complete. Hooray for capitalism!")
sys.exit(os.EX_OK)