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