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
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

View File

@@ -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