58 lines
1.7 KiB
Bash
Executable File
58 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
[ -f functions.sh ] && source functions.sh
|
|
|
|
farewellsFile="triggers/bye/farewells.txt"
|
|
byeTrackingDir="/tmp/stormbot_bye"
|
|
|
|
# Time tracking to prevent spam from flaky connections
|
|
# 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 [[ -f "$userTrackingFile" ]]; then
|
|
lastByeTime=$(cat "$userTrackingFile")
|
|
timeSinceLastBye=$((currentTime - lastByeTime))
|
|
if [[ $timeSinceLastBye -lt $cooldownPeriod ]]; then
|
|
# User was farewelled recently, skip bye message
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# Update last bye time for this user
|
|
echo "$currentTime" > "$userTrackingFile"
|
|
|
|
# All names to match are completely lowercase.
|
|
case "$userName" in
|
|
storm_dragon)
|
|
msg "${2%% :*}" "NOOOOOOOOOO!!! $1: come back!!!"
|
|
;;
|
|
*)
|
|
# Read farewells from file into array
|
|
if [[ -f "$farewellsFile" ]]; then
|
|
mapfile -t farewell < "$farewellsFile"
|
|
else
|
|
# Fallback if file doesn't exist
|
|
farewell=("Goodbye" "Farewell!")
|
|
fi
|
|
|
|
# Replace placeholders with actual values
|
|
selectedFarewell="${farewell[$((RANDOM % ${#farewell[@]}))]}"
|
|
selectedFarewell="${selectedFarewell//\{channel\}/${2%% :*}}"
|
|
|
|
# Check if farewell contains {name} placeholder
|
|
if [[ "$selectedFarewell" == *"{name}"* ]]; then
|
|
# Replace {name} with actual name, don't add prefix
|
|
selectedFarewell="${selectedFarewell//\{name\}/$1}"
|
|
msg "${2%% :*}" "$selectedFarewell"
|
|
else
|
|
# No {name} placeholder, use traditional "name: farewell" format
|
|
msg "${2%% :*}" "$1: $selectedFarewell"
|
|
fi
|
|
;;
|
|
esac
|