diff --git a/triggers/keywords/keywords.sh b/triggers/keywords/keywords.sh index 493fb5e..1a91799 100755 --- a/triggers/keywords/keywords.sh +++ b/triggers/keywords/keywords.sh @@ -10,8 +10,9 @@ shift # each word is stored in an associative array, with the actions to be taken as the array's contents. # the variable $chan contains the channel that caused the trigger. # the variable $who contains the nick that caused the trigger. +# Optional: Add a percentage (e.g., "50%") as the last element to respond only that percent of the time. declare -A keywords -keywords[linux]="msg \"$chan\" \"Linux is $(shuf -n1 -e awesome God great lovely fantastic amazing wonderful)!\"" +keywords[linux]="msg \"$chan\" \"Linux is $(shuf -n1 -e awesome God great lovely fantastic amazing wonderful)!\" 25%" keywords[windows]="msg \"$chan\" \"$(shuf -n1 -e\ "Failure is not an option, it comes bundled with Windows!"\ "Apple got all pissed off because I farted in their store. It's not my falt they don't have Windows..."\ @@ -22,8 +23,8 @@ keywords[windows]="msg \"$chan\" \"$(shuf -n1 -e\ "In a world without walls and fences - who needs windows and gates?"\ "Windows, plug and pray."\ "Windows - Just another pain in the glass."\ - "Windows, it's not pretty, it's not ugly, but it's pretty ugly.")!\"" -keywords[emacs]="msg \"$chan\" \"$who, Real men of genius use vim!\"" + "Windows, it's not pretty, it's not ugly, but it's pretty ugly.")!\" 25%" +keywords[emacs]="msg \"$chan\" \"$who, Real men of genius use vim!\" 50%" keywords[jaws]="msg \"$chan\" \"${who}: watch out for sharks!\"" keywords[emacspeak]="msg \"$chan\" \"$who, Real men of genius use vim!\"" keywords[nano]="msg \"$chan\" \"$who, Real men of genius use vim!\"" @@ -43,7 +44,20 @@ keywords[vim]="msg \"$chan\" \"$(shuf -n1 -e \ wordList="$(echo "${@,,}" | tr '[:space:]' $'\n' | sort -u)" for w in ${wordList//[[:punct:]]/} ; do if [[ -n "${keywords[${w,,}]}" && "$lastWordMatch" != "${keywords[${w,,}]}" ]]; then -eval "${keywords[${w,,}]}" +keywordAction="${keywords[${w,,}]}" +# Check if the last element is a percentage +if [[ "$keywordAction" =~ (.*)\ ([0-9]+)%$ ]]; then +command="${BASH_REMATCH[1]}" +percentage="${BASH_REMATCH[2]}" +# Generate random number between 1-100 and only respond if within percentage +randomNum=$((RANDOM % 100 + 1)) +if [[ $randomNum -le $percentage ]]; then +eval "$command" +fi +else +# No percentage specified, always respond +eval "$keywordAction" +fi lastWordMatch="${keywords[${w,,}]}" fi done