Fixed reminder for real this time.

This commit is contained in:
Storm Dragon
2025-10-25 02:49:15 -04:00
parent 6f6f7159c1
commit 5af965e528

View File

@@ -2,9 +2,11 @@
[ -f functions.sh ] && source functions.sh
userNick="$1"
shift
chan="$1"
shift
chan="$2"
# $3 contains the entire argument string (e.g., "30s hello world")
# We need to split it into time and message
# shellcheck disable=SC2086
set -- $3 # Intentionally unquoted to split into separate words
time="$1"
shift
@@ -46,18 +48,26 @@ if [[ -z "$*" ]]; then
exit 0
fi
msg "$chan" "ok, $userNick, reminder in $time."
reminderMessage="$*"
# Convert message to array for easier parsing
# shellcheck disable=SC2206
msgArray=($*)
targetNick="$userNick" # Default target is the person who set the reminder
# Handle 'tell' syntax for targeting other users
if [[ "$reminderMessage" =~ ^[Tt]ell[[:space:]]+ ]]; then
targetNick="$(echo "${reminderMessage#[T|t]ell }" | cut -d ' ' -f1)"
# Validate nick doesn't contain invalid characters
if [[ "$targetNick" =~ ^[a-zA-Z0-9_\[\]\{\}\\|\`\^\-]+$ ]]; then
userNick="$targetNick"
reminderMessage="${reminderMessage#[Tt]ell }"
reminderMessage="${reminderMessage#* }"
fi
if [[ "${msgArray[0],,}" == "tell" ]]; then
# Extract target nickname (second element, strip trailing punctuation)
extractedNick="${msgArray[1]}"
extractedNick="${extractedNick%:}"
extractedNick="${extractedNick%,}"
# Set target and rebuild message without "tell nickname"
targetNick="$extractedNick"
# Rebuild message from element 2 onward
reminderMessage="${msgArray[*]:2}"
else
reminderMessage="$*"
fi
sleep "$timeInSeconds" && msg "$chan" "$userNick: $reminderMessage" &
msg "$chan" "ok, $userNick, reminder in $time."
sleep "$timeInSeconds" && msg "$chan" "$targetNick: $reminderMessage" &