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