Added optional random percent for bot to not respond on keywords.

This commit is contained in:
Storm Dragon
2025-10-24 21:52:12 -04:00
parent a0afefadfd
commit 8594e011bc

View File

@@ -10,8 +10,9 @@ shift
# each word is stored in an associative array, with the actions to be taken as the array's contents. # 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 $chan contains the channel that caused the trigger.
# the variable $who contains the nick 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 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\ keywords[windows]="msg \"$chan\" \"$(shuf -n1 -e\
"Failure is not an option, it comes bundled with Windows!"\ "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..."\ "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?"\ "In a world without walls and fences - who needs windows and gates?"\
"Windows, plug and pray."\ "Windows, plug and pray."\
"Windows - Just another pain in the glass."\ "Windows - Just another pain in the glass."\
"Windows, it's not pretty, it's not ugly, but it's pretty ugly.")!\"" "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!\"" keywords[emacs]="msg \"$chan\" \"$who, Real men of genius use vim!\" 50%"
keywords[jaws]="msg \"$chan\" \"${who}: watch out for sharks!\"" keywords[jaws]="msg \"$chan\" \"${who}: watch out for sharks!\""
keywords[emacspeak]="msg \"$chan\" \"$who, Real men of genius use vim!\"" keywords[emacspeak]="msg \"$chan\" \"$who, Real men of genius use vim!\""
keywords[nano]="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)" wordList="$(echo "${@,,}" | tr '[:space:]' $'\n' | sort -u)"
for w in ${wordList//[[:punct:]]/} ; do for w in ${wordList//[[:punct:]]/} ; do
if [[ -n "${keywords[${w,,}]}" && "$lastWordMatch" != "${keywords[${w,,}]}" ]]; then 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,,}]}" lastWordMatch="${keywords[${w,,}]}"
fi fi
done done