summaryrefslogtreecommitdiff
path: root/shbrain.sh
diff options
context:
space:
mode:
Diffstat (limited to 'shbrain.sh')
-rwxr-xr-xshbrain.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/shbrain.sh b/shbrain.sh
new file mode 100755
index 0000000..bf8ade4
--- /dev/null
+++ b/shbrain.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+while true
+do
+ read LINE || break
+ ### First of all we get rid of the trailing \n
+ LEN=`expr ${#LINE} - 1`
+ LINE=${LINE[@]:0:$LEN}
+
+ ### Parsing potential shcmd
+ if [[ $LINE =~ :([a-zA-Z]*)!.*:shcmd ]]; then
+ EXPAND=(${LINE})
+ CMD=${EXPAND[4]#:}
+ ARGS=${EXPAND[*]:5}
+ if [[ "trains" =~ "$CMD" ]]; then
+ sh -ex ./shtrains.sh ${ARGS[*]}
+ break
+ elif [ "$CMD" = "help" ]; then
+ echo "PRIVMSG $CHANNEL2 :Help"
+ break
+ else
+ echo "PRIVMSG $CHANNEL2 :Use \"shcmd help\" to list available commands."
+ fi
+ fi
+
+ ### Parsing brain file for potential replies
+ LINENUM=1
+ cat shbrain.txt | \
+ while true
+ do
+ read BRAIN || break
+
+ IFS=" " BRAIN=($BRAIN)
+ PATTERN=${BRAIN[0]}
+ PERCENT=${BRAIN[1]}
+ RESPONSE=${BRAIN[2]}
+ if [[ "$LINE" =~ ${PATTERN} ]]; then
+ if [[ "$((RANDOM / 320))" -lt ${PERCENT} ]]; then
+ echo "PRIVMSG $CHANNEL2 :"`eval echo $RESPONSE`
+ #awk 'NR==$LINENUM{$0='"$RESPONSE"'}1' shbrain.txt
+ #sed "$LINENUM"'s\\'"${PATTERN} 10 ${RESPONSE}" -i shbrain.txt
+ break
+ fi
+ fi
+ (( LINENUM++ ))
+ done
+done
+
+exit 0
+