|
|
|
|
@ -45,19 +45,23 @@ def should_send_notification(username, reset_time): |
|
|
|
|
tracking = load_notification_tracking() |
|
|
|
|
author_data = tracking.get(username, {}) |
|
|
|
|
reset_time_str = str(reset_time) |
|
|
|
|
logging.debug(f"[DEBUG] should_send_notification: username={username}, reset_time_str={reset_time_str}, author_data={author_data}") |
|
|
|
|
if not author_data or str(author_data.get('reset_time')) != reset_time_str: |
|
|
|
|
logging.info(f"[DEBUG] Sending notification for {username}. Previous reset_time: {author_data.get('reset_time')}, New reset_time: {reset_time_str}") |
|
|
|
|
tracking[username] = { |
|
|
|
|
'last_notification': datetime.now(timezone.utc).isoformat(), |
|
|
|
|
'reset_time': reset_time_str |
|
|
|
|
} |
|
|
|
|
save_notification_tracking(tracking) |
|
|
|
|
return True |
|
|
|
|
logging.info(f"[DEBUG] Skipping notification for {username}. Already notified for reset_time: {reset_time_str}") |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
def send_capacity_alert(username, remaining, reset_time): |
|
|
|
|
"""Send email alert when an author's tweet capacity is full.""" |
|
|
|
|
# Always use string for reset_time |
|
|
|
|
reset_time_str = str(reset_time) |
|
|
|
|
logging.debug(f"[DEBUG] send_capacity_alert: username={username}, remaining={remaining}, reset_time_str={reset_time_str}") |
|
|
|
|
if not should_send_notification(username, reset_time_str): |
|
|
|
|
logger.info(f"Skipping duplicate notification for {username}") |
|
|
|
|
return |
|
|
|
|
|