Attempt to fix bug in the cooldown for greet and bye.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user