Refactor annna text command matches. - annna - Annna the nice friendly bot.
(HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit c3d834f28259c7860e41365fb87cfcc3777cf973
(DIR) parent af34952c8eec82a609f56229c0a6ff6d2db2895b
(HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Fri, 5 Jun 2020 20:38:13 +0200
Refactor annna text command matches.
Move some member commands which do not harm to non-member context.
Diffstat:
M annna-start-services | 410 ++++++++++++-------------------
1 file changed, 159 insertions(+), 251 deletions(-)
---
(DIR) diff --git a/annna-start-services b/annna-start-services
@@ -267,9 +267,6 @@ annna_common() {
;;
esac
;;
- esac
-
- case "${text}" in
"Ok, ${botname}"*)
annna-say -c "${channel}" "${user}, I am not a consumer device."
;;
@@ -287,10 +284,7 @@ annna_common() {
"${botname}, please turn me on.")
annna-say -c "${channel}" "☞ ⏻ ${user}"
;;
- esac
-
- if [ "${text}" = "${botname}, I'm bored." ];
- then
+ "${botname}, I'm bored")
randomlink="$(/br/bin/bitreich-lawn-random-link)"
linktype="$(printf "%s\n" "${randomlink}" | cut -d '|' -f1 | cut -c2-)"
linktext="$(printf "%s\n" "${randomlink}" | cut -d '|' -f2)"
@@ -307,182 +301,60 @@ annna_common() {
outtext="$(printf "%s/%s%s" "$outtext" "$linktype" "$linksel")"
fi
annna-say -c "${channel}" "$outtext"
- fi
-
- if [ "${text}" = "${botname}, wb." ];
- then
+ ;;
+ "${botname}, wb.")
annna-say -c "${channel}" "${user}, ty! I am so happy to be here. :)"
- return
- fi
-
- if [ "${text}" = "${botname}, welcome back." ];
- then
+ ;;
+ "${botname}, welcome back.")
annna-say -c "${channel}" "${user}, thank you! I am so happy to be here. :)"
- return
- fi
-
- if [ "${text}" = "${botname}, what's up?" ];
- then
+ ;;
+ "${botname}, what's up?")
newsstr="$(ecl -shell /home/solene/gopher/bin/generator.lisp)"
annna-say -c "${channel}" "$newsstr"
- return
- fi
-
- if [ "${text}" = "${botname}, what's down?" ];
- then
+ ;;
+ "${botname}, what's down?")
annna-say -c "${channel}" "${user}, we all love you."
- return
- fi
-
- if [ "${text}" = "${botname}, I feel sick." ];
- then
+ ;;
+ "${botname}, I feel sick.")
newsstr="$(cd /br/gopher/hypochondria && ./hypochondria -s random)"
annna-say -c "${channel}" "You could have ${newsstr}! Be careful!"
- return
- fi
-
- if [ "${text}" = "${botname}, oh hai!" ];
- then
+ ;;
+ "${botname}, oh hai!")
annna-say -c "${channel}" "${user}, hai! How is your sex life?"
- return
- fi
-
- if [ "${text}" = "${botname}, please tech hype me." ];
- then
+ ;;
+ "${botname}, please tech hype me.")
techstr="$(${modbase}/markov_tech/markov)"
annna-say -c "${channel}" "${techstr}"
- return
- fi
-
- if [ "${text}" = "${botname}, what's my horoscope?" ];
- then
+ ;;
+ "${botname}, what's my horoscope?")
horostr="$($HOME/scm/bullshit/horoscope)"
annna-say -c "${channel}" "${user}, ${horostr}"
- return
- fi
-
- if [ "${text}" = "${botname}, what's my future?" ];
- then
+ ;;
+ "${botname}, what's my future?")
purl="$(sacc gopher://parazyd.org/0/tarot.cgi | /br/bin/bitreich-paste)"
annna-say -c "${channel}" "${user}, your future is here: ${purl}"
- return
- fi
-
- randomtag=0
- if [ "${text}" = "${botname}, please meme meme meme me." ];
- then
- randomtag=2
- fi
-
- if [ "${text}" = "${botname}, what's the wheelchair shooter meme again?" ];
- then
- tagname="#scrollby"
- tagline="$(printf "%s\n" "$(hashtags)" | grep "^${tagname} ")"
- tagname="$(printf "%s\n" "${tagline}" | cut -d ' ' -f 1)"
- taguri="$(printf "%s\n" "${tagline}" | cut -d ' ' -f 2-)"
- annna-say -c "${channel}" "${tagname}: ${taguri}"
- fi
-
- case "${text}" in
- *\#nospoil*)
- ;;
- *\#tag[^a-zA-Z-]*)
- randomtag=1
- ;;
- *\#tag)
- randomtag=1
;;
- *rfc[0-9]*)
- rfcname="$(printf "%s\n" "${text}" | sed 's,.*\(rfc[0-9]*\).*,\1,')"
- annna-say -c "${channel}" "${rfcname}: ftp://ftp.rfc-editor.org/in-notes/${rfcname}.txt"
- ;;
- *RFC[0-9]*)
- rfcname="$(printf "%s\n" "${text}" | sed 's,.*\(RFC[0-9]*\).*,\1,' | tr '[A-Z]' '[a-z]')"
- annna-say -c "${channel}" "${rfcname}: ftp://ftp.rfc-editor.org/in-notes/${rfcname}.txt"
- ;;
- esac
-
- if [ $randomtag -gt 0 ];
- then
- while [ $randomtag -gt 0 ];
- do
- rtag="$(printf "%s\n" "$(hashtags)" | shuf -n 1)"
- tagname=""
- taguri=""
- for tag in ${rtag};
- do
- [ -z "${tagname}" ] && tagname="${tag}" && continue
- taguri="${tag}"
- done
-
- annna-say -c "${channel}" "${tagname}: ${taguri}"
-
- randomtag=$(($randomtag - 1))
- done
- else
- tagname=""
- taguri=""
- for tag in $(hashtags);
- do
- [ -z "${tagname}" ] && tagname="${tag}" && continue
- taguri="${tag}"
-
- case "${text}" in
- *\#nospoil*)
- break;
- ;;
- *${tagname}[^a-zA-Z-]*)
- annna-say -c "${channel}" "${tagname}: ${taguri}"
- break;
- ;;
- *${tagname})
- annna-say -c "${channel}" "${tagname}: ${taguri}"
- break;
- ;;
- esac
- tagname=""
- done
- fi
-
- if [ "${text}" = "${botname}, how many memes do you know?" ];
- then
+ "${botname}, how many memes do you know?")
annna-say -c "${channel}" "I know $(hashtagcount) memes: gopher://adamsgaard.dk/0/pub/memecount"
- return
- fi
-
- if [ "${text}" = "${botname}, how many people died of corona?" ];
- then
+ ;;
+ "${botname}, how many people died of corona?")
annna-say -c "${channel}" "${user}, too many. :( Please see yourself: gopher://magical.fish/1/covid"
- return
- fi
-
-
- if [ "${text}" = "${botname}, please show me your memes." ];
- then
+ ;;
+ "${botname}, please show me your memes.")
purl="$(printf "%s" "$(hashtags)" | /br/bin/bitreich-paste)"
annna-say -c "${channel}" "Here are my memes: ${purl}"
- return
- fi
-
- if [ "${text}" = "${botname}, please distro-hop with me." ];
- then
+ ;;
+ "${botname}, please distro-hop with me.")
ndistro="$(curl -s 'https://distrowatch.com/dwres.php?resource=popularity' \
| grep phr2 \
| sed 's,.*href="\(.*\)".*,\1,' \
| sort | uniq | shuf -n 1)"
annna-say -c "${channel}" "How about https://distrowatch.com/${ndistro} ?"
- return
- fi
-
- ismember=0
- for member in $brmembers;
- do
- [ "$user" = "$member" ] && ismember=1
- done
- [ $ismember -lt 1 ] && return
-
- if [ "${text}" = "${botname}, be cool." ];
- then
+ ;;
+ "${botname}, please show me your Macron.")
+ annna-say -c "${channel}" "gopher://bitreich.org/0/ascii/macron.vt"
+ ;;
+ "${botname}, be cool.")
case "$(($RANDOM % 4))" in
0)
annna-say -c "${channel}" "(⌐■_■)"
@@ -497,11 +369,8 @@ annna_common() {
annna-say -c "${channel}" "(▀Ĺ▀ )"
;;
esac
- return
- fi
-
- if [ "${text}" = "${botname}, please cheer." ];
- then
+ ;;
+ "${botname}, please cheer.")
case "$(($RANDOM % 2))" in
0)
annna-say -c "${channel}" '~\o/~'
@@ -510,11 +379,8 @@ annna_common() {
annna-say -c "${channel}" '✺◟( ° ʖ °)◞✺'
;;
esac
- return
- fi
-
- if [ "${text}" = "${botname}, be cute." ];
- then
+ ;;
+ "${botname}, be cute.")
case "$(($RANDOM % 4))" in
0)
annna-say -c "${channel}" ' (\ /)'
@@ -545,106 +411,46 @@ annna_common() {
annna-say -c "${channel}" ' (, (") (")'
;;
esac
- return
- fi
-
- if [ "${text}" = "${botname}, can you show me the uptime please?" ];
- then
- annna-say -c "${channel}" "$(hostname) uptime: $(uptime)"
- return
- fi
-
- if [ "${text}" = "${botname}, please show me the load." ];
- then
- annna-say -c "${channel}" "$(hostname) load: $(LANG=C uptime | sed 's,.*load average: \(.*\)$,\1,')"
- return
- fi
-
- if [ "${text}" = "${botname}, please show me your Macron." ];
- then
- annna-say -c "${channel}" "gopher://bitreich.org/0/ascii/macron.vt"
- return
- fi
-
- if [ "${text}" = "${botname}, please give me the count of online users." ];
- then
- annna-say -c "${channel}" "$(hostname): $(who -q | tail -n 1 | cut -d'=' -f 2)"
- return
- fi
-
- if [ "${text}" = "${botname}, please roll a dice for me." ];
- then
+ ;;
+ "${botname}, please roll a dice for me.")
annna-say -c "${channel}" "$((($RANDOM % 6) + 1))"
- return
- fi
-
- if [ "${text}" = "${botname}, please tell me your favourite flower." ];
- then
+ ;;
+ "${botname}, please tell me your favourite flower.")
annna-say -c "${channel}" "My favourite flower is the beer flower."
- return
- fi
-
- if [ "${text}" = "${botname}, please tell me your favourite color." ];
- then
+ ;;
+ "${botname}, please tell me your favourite color.")
annna-say -c "${channel}" "My favourite color is yellow."
- return
- fi
-
- if [ "${text}" = "${botname}, please dance." ];
- then
+ ;;
+ "${botname}, please dance.")
if [ $(($RANDOM % 2)) -gt 0 ];
then
annna-say -c "${channel}" ',o/ o/_ _\o _o_ \o\'
else
annna-say -c "${channel}" '\o7 -o7 _o7 .o7 \o. \o_ \o- \o7'
fi
- return
- fi
-
- if [ "${text}" = "${botname}, please dance with me." ];
- then
+ ;;
+ "${botname}, please dance with me.")
if [ $(($RANDOM % 2)) -gt 0 ];
then
annna-say -c "${channel}" "I am not that kind of woman."
else
annna-say -c "${channel}" "Thank you! Let us dance! :-D"
fi
- return
- fi
-
- if [ "${text}" = "${botname}, please tell me who is your favourite pleasure man." ];
- then
+ ;;
+ "${botname}, please tell me who is your favourite pleasure man.")
annna-say -c "${channel}" "My favourite pleasure man is of course Gunther!"
- return
- fi
-
- if [ "${text}" = "${botname}, sudo make me a sandwich" ];
- then
+ ;;
+ "${botname}, sudo make me a sandwich")
annna-say -c "${channel}" "Humans are no objects."
- return
- fi
-
- if [ "${text}" = "${botname}, sudo please make me a sandwich" ];
- then
+ ;;
+ "${botname}, sudo please make me a sandwich")
annna-say -c "${channel}" "Here is your sandwich."
- return
- fi
-
- if [ "${text}" = "${botname}, please update the phlog index." ];
- then
- phlog-index > /dev/null 2>&1
- annna-say -c "${channel}" "Thanks! Your request has been fulfilled with the quickness! :)"
- return
- fi
-
- if [ "${text}" = "${botname}, bonjour !" ];
- then
+ ;;
+ "${botname}, bonjour !")
annna-say -c "${channel}" "${user}, bonjour !"
- return
- fi
-
- if [ "${text}" = "${botname}, please help." ];
- then
+ ;;
+ "${botname}, please help.")
+ # Help Message.
# TODO: Add multiple line support to annna-say -c(1) with sleep.
annna-say -c "${user}" "»how many memes do you know?«gets you the number of memes annna knows, ${user}."
sleep 0.5
@@ -699,8 +505,110 @@ annna_common() {
annna-say -c "${user}" "», bonjour !"
sleep 0.5
annna-say -c "${user}" "»please help.« gives you this help listing, ${user}."
- return
+ ;;
+ esac
+
+ randomtag=0
+ if [ "${text}" = "${botname}, please meme meme meme me." ];
+ then
+ randomtag=2
+ fi
+
+ if [ "${text}" = "${botname}, what's the wheelchair shooter meme again?" ];
+ then
+ tagname="#scrollby"
+ tagline="$(printf "%s\n" "$(hashtags)" | grep "^${tagname} ")"
+ tagname="$(printf "%s\n" "${tagline}" | cut -d ' ' -f 1)"
+ taguri="$(printf "%s\n" "${tagline}" | cut -d ' ' -f 2-)"
+ annna-say -c "${channel}" "${tagname}: ${taguri}"
+ fi
+
+ case "${text}" in
+ *\#nospoil*)
+ ;;
+ *\#tag[^a-zA-Z-]*)
+ randomtag=1
+ ;;
+ *\#tag)
+ randomtag=1
+ ;;
+ *rfc[0-9]*)
+ rfcname="$(printf "%s\n" "${text}" | sed 's,.*\(rfc[0-9]*\).*,\1,')"
+ annna-say -c "${channel}" "${rfcname}: ftp://ftp.rfc-editor.org/in-notes/${rfcname}.txt"
+ ;;
+ *RFC[0-9]*)
+ rfcname="$(printf "%s\n" "${text}" | sed 's,.*\(RFC[0-9]*\).*,\1,' | tr '[A-Z]' '[a-z]')"
+ annna-say -c "${channel}" "${rfcname}: ftp://ftp.rfc-editor.org/in-notes/${rfcname}.txt"
+ ;;
+ esac
+
+ if [ $randomtag -gt 0 ];
+ then
+ while [ $randomtag -gt 0 ];
+ do
+ rtag="$(printf "%s\n" "$(hashtags)" | shuf -n 1)"
+ tagname=""
+ taguri=""
+ for tag in ${rtag};
+ do
+ [ -z "${tagname}" ] && tagname="${tag}" && continue
+ taguri="${tag}"
+ done
+
+ annna-say -c "${channel}" "${tagname}: ${taguri}"
+
+ randomtag=$(($randomtag - 1))
+ done
+ else
+ tagname=""
+ taguri=""
+ for tag in $(hashtags);
+ do
+ [ -z "${tagname}" ] && tagname="${tag}" && continue
+ taguri="${tag}"
+
+ case "${text}" in
+ *\#nospoil*)
+ break;
+ ;;
+ *${tagname}[^a-zA-Z-]*)
+ annna-say -c "${channel}" "${tagname}: ${taguri}"
+ break;
+ ;;
+ *${tagname})
+ annna-say -c "${channel}" "${tagname}: ${taguri}"
+ break;
+ ;;
+ esac
+ tagname=""
+ done
fi
+
+ # Membership Level.
+ ismember=0
+ for member in $brmembers;
+ do
+ [ "$user" = "$member" ] && ismember=1
+ done
+ [ $ismember -lt 1 ] && return
+
+
+ case "${text}" in
+ "${botname}, can you show me the uptime please?")
+ annna-say -c "${channel}" "$(hostname) uptime: $(uptime)"
+ ;;
+ "${botname}, please show me the load.")
+ annna-say -c "${channel}" "$(hostname) load: $(LANG=C uptime | sed 's,.*load average: \(.*\)$,\1,')"
+ ;;
+ "${botname}, please give me the count of online users.")
+ annna-say -c "${channel}" "$(hostname): $(who -q | tail -n 1 | cut -d'=' -f 2)"
+ ;;
+ "${botname}, please update the phlog index.")
+ phlog-index > /dev/null 2>&1
+ annna-say -c "${channel}" "Thanks! Your request has been fulfilled with the quickness! :)"
+ ;;
+ esac
+
}
# Permissions