Added optional random percent for bot to not respond on keywords.
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user