Fixed reminder for real this time.
This commit is contained in:
@@ -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" &
|
||||
|
||||
Reference in New Issue
Block a user