From 22501c80c037a0e2ded994834ca7cf06f9b81930 Mon Sep 17 00:00:00 2001 From: Lili Date: Wed, 15 Mar 2023 13:13:14 +0100 Subject: [PATCH] milestone upgrade subtract pts, rename count to progress, send a chat message on success --- tlapbot/owncast_helpers.py | 41 +++++++++++++++++++------------------- tlapbot/redeems_handler.py | 4 ++-- tlapbot/schema.sql | 2 +- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/tlapbot/owncast_helpers.py b/tlapbot/owncast_helpers.py index ff20eb4..1dc99f2 100644 --- a/tlapbot/owncast_helpers.py +++ b/tlapbot/owncast_helpers.py @@ -187,15 +187,14 @@ def add_to_redeem_queue(db, user_id, redeem_name, note=None): def start_milestone(db, redeem_name): try: cursor = db.execute( - "SELECT count, goal FROM milestones WHERE name = ?", + "SELECT progress, goal FROM milestones WHERE name = ?", (redeem_name,) ) milestone = cursor.fetchone() current_app.logger.error(f"Milestone: {milestone}") if milestone is None: - current_app.logger.error(f"Adding milestone to db.") cursor = db.execute( - "INSERT INTO milestones(name, count, goal) VALUES(?, ?, ?)", + "INSERT INTO milestones(name, progress, goal) VALUES(?, ?, ?)", (redeem_name, 0, current_app.config['REDEEMS'][redeem_name]['goal']) ) db.commit() @@ -203,38 +202,38 @@ def start_milestone(db, redeem_name): current_app.logger.error(f"Error occured adding a milestone: {e.args[0]}") - -def add_to_milestone(db, redeem_name, points): +def add_to_milestone(db, user_id, redeem_name, points_donated): try: - start_milestone(db, redeem_name) - cursor = db.execute( - "SELECT count, goal FROM milestones WHERE name = ?", + "SELECT progress, goal FROM milestones WHERE name = ?", (redeem_name,) ) row = cursor.fetchone() - count = row[0] + if row is None: + current_app.logger.warning("Milestone not found in database.") + current_app.logger.warning("Maybe you forgot to run the refresh-milestones CLI command " + "after you added a new milestone to the config?") + return False + progress = row[0] goal = row[1] - result = count + points - if result > goal: - result = goal - current_app.logger.error(f"Doing db operation to add to milestone.") - cursor = db.execute( - "UPDATE milestones SET count = ? WHERE name = ?", - (result, redeem_name) - ) - db.commit() - return True + if progress + points_donated > goal: + points_donated = goal - progress + if use_points(db, user_id, points_donated): + cursor = db.execute( + "UPDATE milestones SET progress = ? WHERE name = ?", + (progress + points_donated, redeem_name) + ) + db.commit() + return True except Error as e: current_app.logger.error(f"Error occured updating milestone: {e.args[0]}") - current_app.logger.error(f"Milestone add failed.") return False def all_milestones(db): try: cursor = db.execute( - """SELECT name, count, goal FROM milestones""" + """SELECT name, progress, goal FROM milestones""" ) return cursor.fetchall() except Error as e: diff --git a/tlapbot/redeems_handler.py b/tlapbot/redeems_handler.py index 2d785d2..126a67b 100644 --- a/tlapbot/redeems_handler.py +++ b/tlapbot/redeems_handler.py @@ -53,7 +53,7 @@ def handle_redeem(message, user_id): send_chat(f"Cannot redeem {redeem}, amount of points is not an integer.") elif int(note) > points: send_chat(f"Can't redeem {redeem}, you don't have enough points.2") - else: - add_to_milestone(db, redeem, int(note)) + elif add_to_milestone(db, user_id, redeem, int(note)): + send_chat(f"Succesfully donated {int(note)} to {redeem} milestone!") else: send_chat(f"{redeem} not redeemed, type of redeem not found.") diff --git a/tlapbot/schema.sql b/tlapbot/schema.sql index e4b16b8..ddd863e 100644 --- a/tlapbot/schema.sql +++ b/tlapbot/schema.sql @@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS points ( CREATE TABLE milestones ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, - count INTEGER NOT NULL, + progress INTEGER NOT NULL, goal INTEGER NOT NULL );