Attempt to fix bug in the cooldown for greet and bye.

This commit is contained in:
Storm Dragon
2025-11-14 18:33:30 -05:00
parent 86a640ebe8
commit 5b3f8d4825
2 changed files with 16 additions and 10 deletions

View File

@@ -2,18 +2,21 @@
[ -f functions.sh ] && source functions.sh [ -f functions.sh ] && source functions.sh
farewellsFile="triggers/bye/farewells.txt" farewellsFile="triggers/bye/farewells.txt"
byeTrackingDir="/tmp/stormbot_bye"
# Time tracking to prevent spam from flaky connections # Time tracking to prevent spam from flaky connections
# Track last bye time for each user (in seconds since epoch) # Create tracking directory if it doesn't exist
declare -A lastByeTime mkdir -p "$byeTrackingDir"
# Only say bye if user hasn't been farewelled in the last hour (3600 seconds) # Only say bye if user hasn't been farewelled in the last hour (3600 seconds)
currentTime=$(date +%s) currentTime=$(date +%s)
userName="${1,,}" userName="${1,,}"
cooldownPeriod=3600 cooldownPeriod=3600
userTrackingFile="$byeTrackingDir/$userName"
if [[ -n "${lastByeTime[$userName]}" ]]; then if [[ -f "$userTrackingFile" ]]; then
timeSinceLastBye=$((currentTime - lastByeTime[$userName])) lastByeTime=$(cat "$userTrackingFile")
timeSinceLastBye=$((currentTime - lastByeTime))
if [[ $timeSinceLastBye -lt $cooldownPeriod ]]; then if [[ $timeSinceLastBye -lt $cooldownPeriod ]]; then
# User was farewelled recently, skip bye message # User was farewelled recently, skip bye message
exit 0 exit 0
@@ -21,7 +24,7 @@ if [[ -n "${lastByeTime[$userName]}" ]]; then
fi fi
# Update last bye time for this user # Update last bye time for this user
lastByeTime[$userName]=$currentTime echo "$currentTime" > "$userTrackingFile"
# All names to match are completely lowercase. # All names to match are completely lowercase.
case "$userName" in case "$userName" in

View File

@@ -2,18 +2,21 @@
[ -f functions.sh ] && source functions.sh [ -f functions.sh ] && source functions.sh
greetingsFile="triggers/greet/greetings.txt" greetingsFile="triggers/greet/greetings.txt"
greetTrackingDir="/tmp/stormbot_greet"
# Time tracking to prevent spam from flaky connections # Time tracking to prevent spam from flaky connections
# Track last greet time for each user (in seconds since epoch) # Create tracking directory if it doesn't exist
declare -A lastGreetTime mkdir -p "$greetTrackingDir"
# Only greet if user hasn't been greeted in the last hour (3600 seconds) # Only greet if user hasn't been greeted in the last hour (3600 seconds)
currentTime=$(date +%s) currentTime=$(date +%s)
userName="${1,,}" userName="${1,,}"
cooldownPeriod=3600 cooldownPeriod=3600
userTrackingFile="$greetTrackingDir/$userName"
if [[ -n "${lastGreetTime[$userName]}" ]]; then if [[ -f "$userTrackingFile" ]]; then
timeSinceLastGreet=$((currentTime - lastGreetTime[$userName])) lastGreetTime=$(cat "$userTrackingFile")
timeSinceLastGreet=$((currentTime - lastGreetTime))
if [[ $timeSinceLastGreet -lt $cooldownPeriod ]]; then if [[ $timeSinceLastGreet -lt $cooldownPeriod ]]; then
# User was greeted recently, skip greeting # User was greeted recently, skip greeting
exit 0 exit 0
@@ -21,7 +24,7 @@ if [[ -n "${lastGreetTime[$userName]}" ]]; then
fi fi
# Update last greet time for this user # Update last greet time for this user
lastGreetTime[$userName]=$currentTime echo "$currentTime" > "$userTrackingFile"
# All names to match are completely lowercase. # All names to match are completely lowercase.
case "$userName" in case "$userName" in