Kaynağa Gözat

Improve progress message and add lotery

JoostSijm 5 yıl önce
ebeveyn
işleme
cfa478edfc
4 değiştirilmiş dosya ile 77 ekleme ve 5 silme
  1. 18 4
      app/__main__.py
  2. 31 0
      app/app.py
  3. 24 1
      app/database.py
  4. 4 0
      app/jobs.py

+ 18 - 4
app/__main__.py

@@ -23,7 +23,7 @@ def add_update_department(state_id, department_type):
         args=[state_id, department_type],
         id='{}_{}'.format(state_id, department_type),
         replace_existing=True,
-        hour='20'
+        hour='19'
     )
 
 def add_send_progress_message(state_id, department_type, language):
@@ -32,16 +32,29 @@ def add_send_progress_message(state_id, department_type, language):
         jobs.send_progress_message,
         'cron',
         args=[state_id, department_type, language],
-        id='send_message_{}_{}'.format(state_id, department_type),
+        id='send_progress_message_{}_{}'.format(state_id, department_type),
         replace_existing=True,
-        hour='20',
+        hour='19',
         minute='10'
     )
 
+def add_send_lotery_message(state_id, department_type, language, amount):
+    """Add send_message"""
+    SCHEDULER.add_job(
+        jobs.send_progress_message,
+        'cron',
+        args=[state_id, department_type, language, amount],
+        id='send_loter_message_{}_{}'.format(state_id, department_type),
+        replace_existing=True,
+        hour='8',
+    )
+
 if __name__ == '__main__':
     # jobs
     # jobs.update_department(2788, 6)
     # jobs.send_progress_message(2788, 6, 'nl')
+    # jobs.send_lotery_message(2788, 6, 'nl', 1e9)
+    # sys.exit()
 
     # Jobs
     JOBS = job_storage.get_jobs()
@@ -57,11 +70,12 @@ if __name__ == '__main__':
             args=[job['state_id'], job['department_type']],
             id='{}_{}'.format(job['state_id'], job['department_type']),
             replace_existing=True,
-            hour='20'
+            hour='19'
         )
 
     # progress message VN uranium
     add_send_progress_message(2788, 6, 'nl')
+    add_send_lotery_message(2788, 6, 'nl', 10e6)
 
     try:
         while True:

+ 31 - 0
app/app.py

@@ -1,6 +1,8 @@
 """General functions module"""
 
+import random
 import math
+import re
 
 from app import LOGGER, database, api
 
@@ -69,3 +71,32 @@ def send_progress_message(state_id, department_type, language):
     ])
     print(message)
     api.send_message(language, message)
+
+def send_lotery_message(state_id, department_type, language, amount):
+    """Send lotery message"""
+    LOGGER.info('"%s": Send lotery message for "%s" department', state_id, department_type)
+    yesterday_professors = database.get_yesterday_professors(state_id, department_type)
+    professor_count = len(yesterday_professors)
+    random_index = random.randint(0, professor_count) - 1
+    winning_professor = yesterday_professors[random_index]
+    winner = winning_professor.player
+    winner_name = re.sub(r'\[.*]\s', '', winner.name)
+    amount_of_points = database.get_amount_of_points(state_id, department_type, winner.id)
+    LOGGER.info(
+        '"%s": candidates "%s", winner "%s" with "%s" points',
+        state_id, professor_count, winner_name, amount_of_points
+    )
+    msg_winner = "De department loterij is gewonnen door: {:}".format(
+        winner_name
+    )
+    msg_amount = "Met {:} punten heb je $ {:,.0f} gewonnen".format(
+        amount_of_points, amount_of_points * amount
+    ).replace(',', '.')
+    msg_end = "Stuur me een bericht om de prijs te ontvangen."
+    message = '. '.join([
+        msg_winner,
+        msg_amount,
+        msg_end
+    ])
+    print(message)
+    # api.send_message(language, message)

+ 24 - 1
app/database.py

@@ -60,7 +60,10 @@ def get_yesterday_professors(state_id, department_type):
     """Get professors from yesterday"""
     session = SESSION()
     department = get_department(session, state_id, department_type)
-    until_date = datetime.today().replace(hour=20, minute=0, second=0)
+    until_date = datetime.today()
+    if until_date.hour < 19:
+        until_date = until_date - timedelta(1)
+    until_date = until_date.replace(hour=19, minute=0, second=0)
     from_date = until_date - timedelta(1)
     professors = session.query(DepartmentStat) \
         .filter(DepartmentStat.department_id == department.id) \
@@ -68,3 +71,23 @@ def get_yesterday_professors(state_id, department_type):
         .filter(DepartmentStat.date_time < until_date) \
         .all()
     return professors
+
+def get_amount_of_points(state_id, department_type, player_id):
+    """Get amount of points in department by player id"""
+    session = SESSION()
+    department = get_department(session, state_id, department_type)
+    until_date = datetime.today()
+    if until_date.hour < 19:
+        until_date = until_date - timedelta(1)
+    until_date = until_date.replace(hour=19, minute=0, second=0)
+    from_date = until_date - timedelta(14)
+    professors = session.query(DepartmentStat) \
+        .filter(DepartmentStat.department_id == department.id) \
+        .filter(DepartmentStat.player_id == player_id) \
+        .filter(DepartmentStat.date_time >= from_date) \
+        .filter(DepartmentStat.date_time < until_date) \
+        .all()
+    total_points = 0
+    for professor in professors:
+        total_points += professor.points
+    return total_points

+ 4 - 0
app/jobs.py

@@ -10,3 +10,7 @@ def update_department(state_id, department_type):
 def send_progress_message(state_id, department_type, language):
     """Send department progress message"""
     app.send_progress_message(state_id, department_type, language)
+
+def send_lotery_message(state_id, department_type, language, amount):
+    """Send department loterymessage"""
+    app.send_lotery_message(state_id, department_type, language, amount)