URI: 
       Annna is a woman now. She listens on all channels. - annna - Annna the nice friendly bot.
  HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
   DIR commit 7d52d331bf02f2b674bb6a697c71c68987826e34
   DIR parent 7508bcc3337150305f3850897b994a2a8f951bd6
  HTML Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Wed, 13 May 2020 19:44:19 +0200
       
       Annna is a woman now. She listens on all channels.
       
       Diffstat:
         M annna-start-services                |    1254 ++++++++++++++++---------------
       
       1 file changed, 641 insertions(+), 613 deletions(-)
       ---
   DIR diff --git a/annna-start-services b/annna-start-services
       @@ -30,689 +30,717 @@ regeximatch() {
                printf '%s' "$1" | grep -i -E -q "$2"
        }
        
       -# Permissions
       -[ -d ${iiroot} ] && chmod o+rx ${iiroot}
       -[ -d ${iibase} ] && chmod o+rx ${iibase}
       -## EN Channel (this script)
       -[ -d "${iibase}/#bitreich-en" ] \
       -        && chmod o+rx "${iibase}/#bitreich-en"
       -[ -p "${iibase}/#bitreich-en/in" ] \
       -        && chmod o+w "${iibase}/#bitreich-en/in"
       -## SCM (/scm/post-receive)
       -[ -d "${iibase}/#bitreich-scm" ] \
       -        && chmod o+rx "${iibase}/#bitreich-scm"
       -[ -p "${iibase}/#bitreich-scm/in" ] \
       -        && chmod o+w "${iibase}/#bitreich-scm/in"
       -## Radio (/br/radio/playlist.sh + this script)
       -[ -d "${iibase}/#bitreich-radio" ] \
       -        && chmod o+rx "${iibase}/#bitreich-radio"
       -[ -p "${iibase}/#bitreich-radio/in" ] \
       -        && chmod o+w "${iibase}/#bitreich-radio/in"
       -
       -if [ -f "${iibase}/#bitreich-radio/out" ];
       -then
       -# bitreich-radio
       -{
       -        ls "${iibase}/#bitreich-radio/out" | entr tail -n 1 "${iibase}/#bitreich-radio/out" \
       -                | grep -v --line-buffered '[0-9]* -!- ' \
       -                | sed -u 's,[0-9]* <\([^ >]*\)> \(.*\),\1\n\2,' \
       -                | {
       -        while read -r user;
       -        do
       -                read -r text
       -
       -                [ "$user" = "${botname}" ] && continue
       -
       -                if [ "${text}" = "${botname}, next please." ];
       -                then
       -                        /br/bin/bitreich-radio-playlist-next
       -                        annna-say -c "#bitreich-radio" "You are very kind ${user}. To your command."
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please help." ];
       -                then
       -                        annna-say -c "${user}" "»next please.« gets the playlist further, ${user}."
       -                        annna-say -c "${user}" "»please help.« gives you this help listing, ${user}."
       -                        continue;
       -                fi
       -        done
       -        }
       -} &
       -fi
       -
       -# bitreich-en
       -if [ -f "${iibase}/#bitreich-en/out" ];
       -then
       -{
       -        ls "${iibase}/#bitreich-en/out" | entr tail -n 1 "${iibase}/#bitreich-en/out" \
       -                | grep -v --line-buffered '[0-9]* -!- ' \
       -                | sed -u 's,[0-9]* <\([^ >]*\)> \(.*\),\1\n\2,' \
       -                | {
       -        while read -r user;
       -        do
       -                read -r text
       -                [ "$user" = "${botname}" ] && continue
       -
       -                uri="$(printf "%s\n" "${text}" \
       -                        | sed -n '/.*\(https\{0,1\}:\/\/[^ ]\{1,\}\).*/s//\1/p')"
       -                case "${text}" in
       -                *\#nospoil*)
       -                        ;;
       -                *)
       -                        if [ -n "$uri" ];
       +annna_common() {
       +        channel="$1"
       +        user="$2"
       +        text="$3"
       +
       +        printf "annna_common: %s %s %s\n" "${channel}" "${user}" "${text}"
       +
       +        [ "$user" = "${botname}" ] && return
       +
       +        uri="$(printf "%s\n" "${text}" \
       +                | sed -n '/.*\(https\{0,1\}:\/\/[^ ]\{1,\}\).*/s//\1/p')"
       +        case "${text}" in
       +        *\#nospoil*)
       +                ;;
       +        *)
       +                if [ -n "$uri" ];
       +                then
       +                        tmpf=$(mktemp)
       +                        fetch-url "${uri}" > "${tmpf}"
       +                        urititle="$(grabtitle < "${tmpf}" | sed 's/^ *\(.\{0,200\}\).*/\1/')"
       +                        # TODO: Replace all of this with a better logic for parsing global domains.
       +                        if [ -n "$urititle" ];
                                then
       -                                tmpf=$(mktemp)
       -                                fetch-url "${uri}" > "${tmpf}"
       -                                urititle="$(grabtitle < "${tmpf}" | sed 's/^ *\(.\{0,200\}\).*/\1/')"
       -                                # TODO: Replace all of this with a better logic for parsing global domains.
       -                                if [ -n "$urititle" ];
       -                                then
       -                                        case "${urititle}" in
       -                                        *Gunther*|*GUNTHER*|*Gnther*)
       -                                                annna-say -c "#bitreich-en" "Oh Gunther! ❤  ❤  ❤  ${urititle}"
       -                                                ;;
       -                                        *\|\ Cloudflare*)
       -                                                annna-say -c "#bitreich-en" "Mind your own business! We got clownflared: gopher://bitreich.org/0/ascii/clownflare.vt"
       -                                                ;;
       -                                        *)
       -                                                if expr "${uri}" : '^https*://[^/]*youtu\(\.be\|be\..\{2,3\}\)/'
       +                                case "${urititle}" in
       +                                *Gunther*|*GUNTHER*|*Gnther*)
       +                                        annna-say -c "${channel}" "Oh Gunther! ❤  ❤  ❤  ${urititle}"
       +                                        ;;
       +                                *\|\ Cloudflare*)
       +                                        annna-say -c "${channel}" "Mind your own business! We got clownflared: gopher://bitreich.org/0/ascii/clownflare.vt"
       +                                        ;;
       +                                *)
       +                                        if expr "${uri}" : '^https*://[^/]*youtu\(\.be\|be\..\{2,3\}\)/'
       +                                        then
       +                                                spurl="$(subtitle-paste "${uri}")"
       +                                                if [ -n "${spurl}" ];
                                                        then
       -                                                        spurl="$(subtitle-paste "${uri}")"
       -                                                        if [ -n "${spurl}" ];
       -                                                        then
       -                                                                annna-say -c "#bitreich-en" "HTML title: ${urititle} ; subtitles: ${spurl}"
       -                                                        else
       -                                                                annna-say -c "#bitreich-en" "HTML title: ${urititle}"
       -                                                        fi
       +                                                        annna-say -c "${channel}" "HTML title: ${urititle} ; subtitles: ${spurl}"
                                                        else
       -                                                        wikipedia=0
       -                                                        case "${uri}" in
       -                                                        *twitter.com*)
       -                                                                nurl="$(printf "%s\n" "${uri}" | sed 's;\(mobile\.\)\{0,1\}twitter\.com;nitter\.net;')"
       -                                                                spurl="$(screenshot-paste "${nurl}")"
       -                                                                annna-say -c '#bitreich-en' "nitter: ${nurl}"
       -
       -                                                                ;;
       -                                                        *en.wikipedia.org/wiki*)
       -                                                                if ! regeximatch "$uri" '\.(jpg,bmp,gif,png,tiff,avi,mp4,webm,mkv,pdf,ps,eps)$'; then
       -                                                                        nurl="$(printf '%s\n' "${uri}" | sed "s;.*en.wikipedia.org/wiki;gopher://gopherpedia.com/0;")"
       -                                                                        purl="$(9 htmlfmt < "${tmpf}" | /br/bin/bitreich-paste)"
       -                                                                        annna-say -c '#bitreich-en' "gopherpedia: ${nurl} ; content: ${purl}"
       -                                                                        # Hack, Hack, Hack.
       -                                                                        wikipedia=1
       -                                                                fi
       -                                                                ;;
       -                                                        *www.reddit.com*)
       -                                                                nurl="$(printf '%s\n' "${uri}" | sed "s;www.reddit.com;old.reddit.com;")"
       +                                                        annna-say -c "${channel}" "HTML title: ${urititle}"
       +                                                fi
       +                                        else
       +                                                wikipedia=0
       +                                                case "${uri}" in
       +                                                *twitter.com*)
       +                                                        nurl="$(printf "%s\n" "${uri}" | sed 's;\(mobile\.\)\{0,1\}twitter\.com;nitter\.net;')"
       +                                                        spurl="$(screenshot-paste "${nurl}")"
       +                                                        annna-say -c "${channel}" "nitter: ${nurl}"
       +
       +                                                        ;;
       +                                                *en.wikipedia.org/wiki*)
       +                                                        if ! regeximatch "$uri" '\.(jpg,bmp,gif,png,tiff,avi,mp4,webm,mkv,pdf,ps,eps)$'; then
       +                                                                nurl="$(printf '%s\n' "${uri}" | sed "s;.*en.wikipedia.org/wiki;gopher://gopherpedia.com/0;")"
                                                                        purl="$(9 htmlfmt < "${tmpf}" | /br/bin/bitreich-paste)"
       -                                                                if [ -n "${uri#*www.reddit.com/r/*}" ]; then
       -                                                                        subreddit="$(printf '%s\n' "${uri}" | cut -d / -f 5)"
       -                                                                        post="$(printf '%s\n' "${uri}" | cut -d / -f 7)"
       -                                                                        if [ -n "${post}" ]; then
       -                                                                                gurl="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?view&${post}&${subreddit}&10"
       -                                                                        else
       -                                                                                gurl="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?menu&${subreddit}&10"
       -                                                                        fi
       -                                                                        annna-say -c '#bitreich-en' "old.reddit: ${nurl} ; gopherddit: ${gurl} ; content: ${purl}"
       -                                                                else
       -                                                                        annna-say -c '#bitreich-en' "old.reddit: ${nurl} ; content: ${purl}"
       -                                                                fi
       +                                                                annna-say -c "${channel}" "gopherpedia: ${nurl} ; content: ${purl}"
                                                                        # Hack, Hack, Hack.
                                                                        wikipedia=1
       -                                                                ;;
       -                                                        *)
       -                                                                spurl=""
       -                                                                ;;
       -                                                        esac
       -
       -                                                        if [ $wikipedia -eq 0 ];
       -                                                        then
       -                                                                purl="$(9 htmlfmt < "${tmpf}" | /br/bin/bitreich-paste)"
       -                                                                if [ -n "${spurl}" ];
       -                                                                then
       -                                                                        annna-say -c "#bitreich-en" "content: ${purl} ; screen: ${spurl} ; HTML title: ${urititle}"
       +                                                        fi
       +                                                        ;;
       +                                                *www.reddit.com*)
       +                                                        nurl="$(printf '%s\n' "${uri}" | sed "s;www.reddit.com;old.reddit.com;")"
       +                                                        purl="$(9 htmlfmt < "${tmpf}" | /br/bin/bitreich-paste)"
       +                                                        if [ -n "${uri#*www.reddit.com/r/*}" ]; then
       +                                                                subreddit="$(printf '%s\n' "${uri}" | cut -d / -f 5)"
       +                                                                post="$(printf '%s\n' "${uri}" | cut -d / -f 7)"
       +                                                                if [ -n "${post}" ]; then
       +                                                                        gurl="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?view&${post}&${subreddit}&10"
                                                                        else
       -                                                                        annna-say -c "#bitreich-en" "content: ${purl} ; HTML title: ${urititle}"
       +                                                                        gurl="gopher://gopherddit.com/1/cgi-bin/reddit.cgi?menu&${subreddit}&10"
                                                                        fi
       +                                                                annna-say -c "${channel}" "old.reddit: ${nurl} ; gopherddit: ${gurl} ; content: ${purl}"
       +                                                        else
       +                                                                annna-say -c "${channel}" "old.reddit: ${nurl} ; content: ${purl}"
       +                                                        fi
       +                                                        # Hack, Hack, Hack.
       +                                                        wikipedia=1
       +                                                        ;;
       +                                                *)
       +                                                        spurl=""
       +                                                        ;;
       +                                                esac
       +
       +                                                if [ $wikipedia -eq 0 ];
       +                                                then
       +                                                        purl="$(9 htmlfmt < "${tmpf}" | /br/bin/bitreich-paste)"
       +                                                        if [ -n "${spurl}" ];
       +                                                        then
       +                                                                annna-say -c "${channel}" "content: ${purl} ; screen: ${spurl} ; HTML title: ${urititle}"
       +                                                        else
       +                                                                annna-say -c "${channel}" "content: ${purl} ; HTML title: ${urititle}"
                                                                fi
                                                        fi
       -                                                ;;
       -                                        esac
       -                                fi
       -                                rm -f "${tmpf}"
       -                                continue
       +                                        fi
       +                                        ;;
       +                                esac
                                fi
       +                        rm -f "${tmpf}"
       +                        return
       +                fi
       +                ;;
       +        esac
       +
       +        case "${text}" in
       +        "${botname}, what is "*)
       +                word="$(printf "%s\n" "${text}" | cut -c 16-)"
       +                case "$word" in
       +                *\?)
       +                        word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
                                ;;
                        esac
        
       -                case "${text}" in
       -                "${botname}, what is "*)
       -                        word="$(printf "%s\n" "${text}" | cut -c 16-)"
       -                        case "$word" in
       -                        *\?)
       -                                word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
       -                                ;;
       -                        esac
       -
       -                        purl=""
       +                purl=""
       +                dresult="$(dict "dict://parazyd.org/d:${word}")"
       +                derr=$?
       +                if [ $derr -eq 20 ];
       +                then
                                dresult="$(dict "dict://parazyd.org/d:${word}")"
       -                        derr=$?
       -                        if [ $derr -eq 20 ];
       -                        then
       -                                dresult="$(dict "dict://parazyd.org/d:${word}")"
       -                                derr2="$?"
       -                                [ $derr2 -ne $derr ] && derr=$derr2
       -                        fi
       -                        case "$derr" in
       -                        0|21)
       -                                purl="$(printf "%s" "${dresult}" | /br/bin/bitreich-paste)"
       -                                ;;
       -                        20)
       -                                purl="No matches found."
       -                                ;;
       -                        1)
       -                                purl="Parse error."
       +                        derr2="$?"
       +                        [ $derr2 -ne $derr ] && derr=$derr2
       +                fi
       +                case "$derr" in
       +                0|21)
       +                        purl="$(printf "%s" "${dresult}" | /br/bin/bitreich-paste)"
       +                        ;;
       +                20)
       +                        purl="No matches found."
       +                        ;;
       +                1)
       +                        purl="Parse error."
       +                        ;;
       +                *)
       +                        purl="Parazyd destroyed the server. Nothing to see here."
       +                        ;;
       +                esac
       +                annna-say -c "${channel}" "${purl}"
       +                ;;
       +        "${botname}, wolfram is "*)
       +                word="$(printf "%s\n" "${text}" | cut -c 19- | sed 's,\t,    ,g')"
       +                case "$word" in
       +                *\?)
       +                        word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
       +                        ;;
       +                esac
       +
       +                purl=""
       +                dresult="$(printf "/wolfram\t%s\r\n" "${word}" \
       +                        | nc magical.fish 70 \
       +                        | awk '/iAnswer:/,/iAsk/' \
       +                        | grep -v '^i ' \
       +                        | head -n -1 \
       +                        | tail -n +2 \
       +                        | sed 's,i\(.*\)fake\texample.com.*,\1,;s,[ \t]*$,,')"
       +
       +
       +                if [ -n "$dresult" ];
       +                then
       +                        case "${dresult}" in
       +                        b*)
       +                                dresult="$(printf "%s\n" "${dresult}" \
       +                                        | tr '\n' ' ' \
       +                                        | sed "s,^b',,;s,' $,," \
       +                                        | sed 's,^b",,;s," $,,' \
       +                                        | sed 's,\\n,\n,g;s,\\t,\t,g')"
                                        ;;
                                *)
       -                                purl="Parazyd destroyed the server. Nothing to see here."
       +                                dresult="$(printf "%s\n" "${dresult}" \
       +                                        | sed 's,\([a-zA-Z]\)$,\1 ,' \
       +                                        | tr -d '\n')"
                                        ;;
                                esac
       -                        annna-say -c '#bitreich-en' "${purl}"
       -                        ;;
       -                "${botname}, wolfram is "*)
       -                        word="$(printf "%s\n" "${text}" | cut -c 19- | sed 's,\t,    ,g')"
       -                        case "$word" in
       -                        *\?)
       -                                word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
       -                                ;;
       -                        esac
       -
       -                        purl=""
       -                        dresult="$(printf "/wolfram\t%s\r\n" "${word}" \
       -                                | nc magical.fish 70 \
       -                                | awk '/iAnswer:/,/iAsk/' \
       -                                | grep -v '^i ' \
       -                                | head -n -1 \
       -                                | tail -n +2 \
       -                                | sed 's,i\(.*\)fake\texample.com.*,\1,;s,[ \t]*$,,')"
        
       +                        wcl="$(printf "%s" "${dresult}" | wc -l)"
        
       -                        if [ -n "$dresult" ];
       +                        if [ $wcl -gt 1 ];
                                then
       -                                case "${dresult}" in
       -                                b*)
       -                                        dresult="$(printf "%s\n" "${dresult}" \
       -                                                | tr '\n' ' ' \
       -                                                | sed "s,^b',,;s,' $,," \
       -                                                | sed 's,^b",,;s," $,,' \
       -                                                | sed 's,\\n,\n,g;s,\\t,\t,g')"
       -                                        ;;
       -                                *)
       -                                        dresult="$(printf "%s\n" "${dresult}" \
       -                                                | sed 's,\([a-zA-Z]\)$,\1 ,' \
       -                                                | tr -d '\n')"
       -                                        ;;
       -                                esac
       -
       -                                wcl="$(printf "%s" "${dresult}" | wc -l)"
       -
       -                                if [ $wcl -gt 1 ];
       -                                then
       -                                        purl="$(printf "%s" "${dresult}" | /br/bin/bitreich-paste)"
       -                                else
       -                                        purl="${dresult}"
       -                                fi
       +                                purl="$(printf "%s" "${dresult}" | /br/bin/bitreich-paste)"
                                else
       -                                purl="No matches found."
       +                                purl="${dresult}"
                                fi
       -                        annna-say -c '#bitreich-en' "${purl}"
       -                        ;;
       -                "${botname}, textsynth is "*)
       -                        word="$(printf "%s\n" "${text}" | cut -c 21- | sed 's,\t,    ,g')"
       -                        case "$word" in
       -                        *\?)
       -                                word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
       -                                ;;
       -                        esac
       -
       -                        # Do in background, because read is very slow.
       -                        {
       -                                dresult="$(textsynth-complete "${word}")"
       -                                if [ -n "${dresult}" ];
       -                                then
       -                                        purl="$({
       -                                                # First the old words.
       -                                                printf "%s" "${word}";
       -                                                # then the generated text.
       -                                                printf "%s" "${dresult}";
       -                                        } | /br/bin/bitreich-paste)"
       -                                else
       -                                        purl="Textsynth did not answer."
       -                                fi
       -                                annna-say -c '#bitreich-en' "textsynth result: ${purl}"
       -                        } &
       -
       -                        ;;
       -                "${botname}, are "*)
       -                        case "${text}" in
       -                        *" in love?")
       -                                words="$(printf "%s\n" "${text}" | sed 's,.*are \(.*\) and \(.*\) in love?,\1 \2,')"
       -                                lovedistance="$(printf "%s * 100\n" "$(fstrcmp ${words})" | bc | cut -d'.' -f 1)"
       -                                if [ $lovedistance -gt 15 ];
       -                                then
       -                                        annna-say -c '#bitreich-en' 'Yes!!! Pure <3 <3'
       -                                else
       -                                        annna-say -c '#bitreich-en' "No."
       -                                fi
       -                                ;;
       -                        esac
       -                        ;;
       -                esac
       -
       -                case "${text}" in
       -                "${botname}, please turn on "*)
       -                        word="$(printf "%s\n" "${text}" | cut -c 22-)"
       -                        annna-say -c '#bitreich-en' "☞ ⏻ ${word}"
       -                        ;;
       -                "${botname}, please turn me on.")
       -                        annna-say -c '#bitreich-en' "☞ ⏻ ${user}"
       +                else
       +                        purl="No matches found."
       +                fi
       +                annna-say -c "${channel}" "${purl}"
       +                ;;
       +        "${botname}, textsynth is "*)
       +                word="$(printf "%s\n" "${text}" | cut -c 21- | sed 's,\t,    ,g')"
       +                case "$word" in
       +                *\?)
       +                        word="$(printf "%s\n" "${word}" | cut -c -"$(($(expr length "${word}") - 1))")"
                                ;;
                        esac
        
       -                if [ "${text}" = "${botname}, I'm bored." ];
       -                then
       -                        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)"
       -                        linksel="$(printf "%s\n" "${randomlink}" | cut -d '|' -f3)"
       -                        linkserver="$(printf "%s\n" "${randomlink}" | cut -d '|' -f4)"
       -                        linkport="$(printf "%s\n" "${randomlink}" | cut -d '|' -f5 | cut -d']' -f1)"
       -                        outtext="$(printf "%s - gopher://%s" "$linktext" "$linkserver")"
       -                        if [ "$linkport" != "70" -a "$linkport" != "port" ];
       -                        then
       -                                outtext="$(printf "%s:%s" "$outtext" "$linkport")"
       -                        fi
       -                        if [ -n "$linksel" ];
       +                # Do in background, because read is very slow.
       +                {
       +                        dresult="$(textsynth-complete "${word}")"
       +                        if [ -n "${dresult}" ];
                                then
       -                                outtext="$(printf "%s/%s%s" "$outtext" "$linktype" "$linksel")"
       +                                purl="$({
       +                                        # First the old words.
       +                                        printf "%s" "${word}";
       +                                        # then the generated text.
       +                                        printf "%s" "${dresult}";
       +                                } | /br/bin/bitreich-paste)"
       +                        else
       +                                purl="Textsynth did not answer."
                                fi
       -                        annna-say -c "#bitreich-en" "$outtext"
       -                fi
       -
       -                if [ "${text}" = "${botname}, what's up?" ];
       -                then
       -                        newsstr="$(ecl -shell /home/solene/gopher/bin/generator.lisp)"
       -                        annna-say -c "#bitreich-en" "$newsstr"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, I feel sick." ];
       -                then
       -                        newsstr="$(cd /br/gopher/hypochondria && ./hypochondria -s random)"
       -                        annna-say -c "#bitreich-en" "You could have ${newsstr}! Be careful!"
       -                        continue;
       -                fi
       +                        annna-say -c "${channel}" "textsynth result: ${purl}"
       +                } &
        
       -                if [ "${text}" = "${botname}, oh hai!" ];
       -                then
       -                        annna-say -c "#bitreich-en" "${user}, hai! How is your sex life?"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please tech hype me." ];
       -                then
       -                        techstr="$(${modbase}/markov_tech/markov)"
       -                        annna-say -c "#bitreich-en" "${techstr}"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, what's my horoscope?" ];
       -                then
       -                        horostr="$($HOME/scm/bullshit/horoscope)"
       -                        annna-say -c "#bitreich-en" "${user}, ${horostr}"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, what's my future?" ];
       -                then
       -                        purl="$(sacc gopher://parazyd.org/0/tarot.cgi | /br/bin/bitreich-paste)"
       -                        annna-say -c "#bitreich-en" "${user}, your future is here: ${purl}"
       -                        continue;
       -                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 "#bitreich-en" "${tagname}: ${taguri}"
       -                fi
       -                
       +                ;;
       +        "${botname}, are "*)
                        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 "#bitreich-en" "${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 "#bitreich-en" "${rfcname}: ftp://ftp.rfc-editor.org/in-notes/${rfcname}.txt"
       +                *" in love?")
       +                        words="$(printf "%s\n" "${text}" | sed 's,.*are \(.*\) and \(.*\) in love?,\1 \2,')"
       +                        lovedistance="$(printf "%s * 100\n" "$(fstrcmp ${words})" | bc | cut -d'.' -f 1)"
       +                        if [ $lovedistance -gt 15 ];
       +                        then
       +                                annna-say -c "${channel}" 'Yes!!! Pure <3 <3'
       +                        else
       +                                annna-say -c "${channel}" "No."
       +                        fi
                                ;;
                        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 "#bitreich-en" "${tagname}: ${taguri}"
       -
       -                                randomtag=$(($randomtag - 1))
       -                        done
       -                else
       +                ;;
       +        esac
       +
       +        case "${text}" in
       +        "${botname}, please turn on "*)
       +                word="$(printf "%s\n" "${text}" | cut -c 22-)"
       +                annna-say -c "${channel}" "☞ ⏻ ${word}"
       +                ;;
       +        "${botname}, please turn me on.")
       +                annna-say -c "${channel}" "☞ ⏻ ${user}"
       +                ;;
       +        esac
       +
       +        if [ "${text}" = "${botname}, I'm bored." ];
       +        then
       +                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)"
       +                linksel="$(printf "%s\n" "${randomlink}" | cut -d '|' -f3)"
       +                linkserver="$(printf "%s\n" "${randomlink}" | cut -d '|' -f4)"
       +                linkport="$(printf "%s\n" "${randomlink}" | cut -d '|' -f5 | cut -d']' -f1)"
       +                outtext="$(printf "%s - gopher://%s" "$linktext" "$linkserver")"
       +                if [ "$linkport" != "70" -a "$linkport" != "port" ];
       +                then
       +                        outtext="$(printf "%s:%s" "$outtext" "$linkport")"
       +                fi
       +                if [ -n "$linksel" ];
       +                then
       +                        outtext="$(printf "%s/%s%s" "$outtext" "$linktype" "$linksel")"
       +                fi
       +                annna-say -c "${channel}" "$outtext"
       +        fi
       +
       +        if [ "${text}" = "${botname}, what's up?" ];
       +        then
       +                newsstr="$(ecl -shell /home/solene/gopher/bin/generator.lisp)"
       +                annna-say -c "${channel}" "$newsstr"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, I feel sick." ];
       +        then
       +                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
       +                annna-say -c "${channel}" "${user}, hai! How is your sex life?"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please tech hype me." ];
       +        then
       +                techstr="$(${modbase}/markov_tech/markov)"
       +                annna-say -c "${channel}" "${techstr}"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, what's my horoscope?" ];
       +        then
       +                horostr="$($HOME/scm/bullshit/horoscope)"
       +                annna-say -c "${channel}" "${user}, ${horostr}"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, what's my future?" ];
       +        then
       +                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 $(hashtags);
       +                        for tag in ${rtag};
                                do
                                        [ -z "${tagname}" ] && tagname="${tag}" && continue
                                        taguri="${tag}"
       -
       -                                case "${text}" in
       -                                *\#nospoil*)
       -                                        break;
       -                                        ;;
       -                                *${tagname}[^a-zA-Z-]*)
       -                                        annna-say -c "#bitreich-en" "${tagname}: ${taguri}"
       -                                        break;
       -                                        ;;
       -                                *${tagname})
       -                                        annna-say -c "#bitreich-en" "${tagname}: ${taguri}"
       -                                        break;
       -                                        ;;
       -                                esac
       -                                tagname=""
                                done
       -                fi
       -
       -                if [ "${text}" = "${botname}, how many memes do you know?" ];
       -                then
       -                        annna-say -c "#bitreich-en" "I know $(hashtagcount) memes: gopher://adamsgaard.dk/0/pub/memecount"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, how many people died of corona?" ];
       -                then
       -                        annna-say -c "#bitreich-en" "${user}, too many. :( Please see yourself: gopher://magical.fish/1/covid"
       -                        continue;
       -                fi
       -
       -
       -                if [ "${text}" = "${botname}, please show me your memes." ];
       -                then
       -                        purl="$(printf "%s" "$(hashtags)" | /br/bin/bitreich-paste)"
       -                        annna-say -c "#bitreich-en" "Here are my memes: ${purl}"
       -                        continue;
       -                fi
        
       -                if [ "${text}" = "${botname}, please distro-hop with me." ];
       -                then
       -                        ndistro="$(curl -s 'https://distrowatch.com/dwres.php?resource=popularity' \
       -                                | grep phr2 \
       -                                | sed 's,.*href="\(.*\)".*,\1,' \
       -                                | sort | uniq | shuf -n 1)"
       -                        annna-say -c "#bitreich-en" "How about https://distrowatch.com/${ndistro} ?"
       -                        continue;
       -                fi
       +                        annna-say -c "${channel}" "${tagname}: ${taguri}"
        
       -                ismember=0
       -                for member in $brmembers;
       -                do
       -                        [ "$user" = "$member" ] && ismember=1
       +                        randomtag=$(($randomtag - 1))
                        done
       -                [ $ismember -lt 1 ] && continue
       -
       -                if [ "${text}" = "${botname}, be cool." ];
       -                then
       -                        case "$(($RANDOM % 4))" in
       -                        0)
       -                                annna-say -c "#bitreich-en" "(⌐■_■)"
       -                                ;;
       -                        1)
       -                                annna-say -c "#bitreich-en" "(▰˘◡˘▰)"
       -                                ;;
       -                        2)
       -                                annna-say -c "#bitreich-en" "(▀ Ĺ▀ )̄"
       -                                ;;
       -                        *)
       -                                annna-say -c "#bitreich-en" "(▀Ĺ▀ )"
       -                                ;;
       -                        esac
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please cheer." ];
       -                then
       -                        case "$(($RANDOM % 2))" in
       -                        0)
       -                                annna-say -c "#bitreich-en" '~\o/~'
       -                                ;;
       -                        *)
       -                                annna-say -c "#bitreich-en" '✺◟( ° ʖ °)◞✺'
       -                                ;;
       -                        esac
       -                        continue;
       -                fi
       +        else
       +                tagname=""
       +                taguri=""
       +                for tag in $(hashtags);
       +                do
       +                        [ -z "${tagname}" ] && tagname="${tag}" && continue
       +                        taguri="${tag}"
        
       -                if [ "${text}" = "${botname}, be cute." ];
       -                then
       -                        case "$(($RANDOM % 4))" in
       -                        0)
       -                                annna-say -c "#bitreich-en" '    (\ /)'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '    (. .)'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '  C(") (")'
       -                                ;;
       -                        1)
       -                                annna-say -c "#bitreich-en" '   (\-/)'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" "  (='.'=)"
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '  (")-(")o'
       +                        case "${text}" in
       +                        *\#nospoil*)
       +                                break;
                                        ;;
       -                        2)
       -                                annna-say -c "#bitreich-en" '  ( ) ( )'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '  (>•.•<)'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '  (") (")'
       +                        *${tagname}[^a-zA-Z-]*)
       +                                annna-say -c "${channel}" "${tagname}: ${taguri}"
       +                                break;
                                        ;;
       -                        *)
       -                                annna-say -c "#bitreich-en" '  (\  (\'
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" "  (=' :')"
       -                                sleep 0.1
       -                                annna-say -c "#bitreich-en" '  (, (") (")'
       +                        *${tagname})
       +                                annna-say -c "${channel}" "${tagname}: ${taguri}"
       +                                break;
                                        ;;
                                esac
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, can you show me the uptime please?" ];
       -                then
       -                        annna-say -c "#bitreich-en" "$(hostname) uptime: $(uptime)"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please show me the load." ];
       -                then
       -                        annna-say -c "#bitreich-en" "$(hostname) load: $(LANG=C uptime | sed 's,.*load average: \(.*\)$,\1,')"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please show me your Macron." ];
       -                then
       -                        annna-say -c "#bitreich-en" "gopher://bitreich.org/0/ascii/macron.vt"
       -                        continue;
       -                fi
       -
       -                if [ "${text}" = "${botname}, please give me the count of online users." ];
       -                then
       -                        annna-say -c "#bitreich-en" "$(hostname): $(who -q | tail -n 1 | cut -d'=' -f 2)"
       -                        continue;
       -                fi
       +                        tagname=""
       +                done
       +        fi
       +
       +        if [ "${text}" = "${botname}, how many memes do you know?" ];
       +        then
       +                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
       +                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
       +                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
       +                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}, please roll a dice for me." ];
       -                then
       -                        annna-say -c "#bitreich-en" "$((($RANDOM % 6) + 1))"
       -                        continue;
       +        if [ "${text}" = "${botname}, be cool." ];
       +        then
       +                case "$(($RANDOM % 4))" in
       +                0)
       +                        annna-say -c "${channel}" "(⌐■_■)"
       +                        ;;
       +                1)
       +                        annna-say -c "${channel}" "(▰˘◡˘▰)"
       +                        ;;
       +                2)
       +                        annna-say -c "${channel}" "(▀ Ĺ▀ )̄"
       +                        ;;
       +                *)
       +                        annna-say -c "${channel}" "(▀Ĺ▀ )"
       +                        ;;
       +                esac
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please cheer." ];
       +        then
       +                case "$(($RANDOM % 2))" in
       +                0)
       +                        annna-say -c "${channel}" '~\o/~'
       +                        ;;
       +                *)
       +                        annna-say -c "${channel}" '✺◟( ° ʖ °)◞✺'
       +                        ;;
       +                esac
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, be cute." ];
       +        then
       +                case "$(($RANDOM % 4))" in
       +                0)
       +                        annna-say -c "${channel}" '    (\ /)'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" '    (. .)'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" '  C(") (")'
       +                        ;;
       +                1)
       +                        annna-say -c "${channel}" '   (\-/)'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" "  (='.'=)"
       +                        sleep 0.1
       +                        annna-say -c "${channel}" '  (")-(")o'
       +                        ;;
       +                2)
       +                        annna-say -c "${channel}" '  ( ) ( )'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" '  (>•.•<)'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" '  (") (")'
       +                        ;;
       +                *)
       +                        annna-say -c "${channel}" '  (\  (\'
       +                        sleep 0.1
       +                        annna-say -c "${channel}" "  (=' :')"
       +                        sleep 0.1
       +                        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
       +                annna-say -c "${channel}" "$((($RANDOM % 6) + 1))"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please tell me your favourite flower." ];
       +        then
       +                annna-say -c "${channel}" "My favourite flower is the beer flower."
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please tell me your favourite color." ];
       +        then
       +                annna-say -c "${channel}" "My favourite color is yellow."
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please dance." ];
       +        then
       +                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 tell me your favourite flower." ];
       +        if [ "${text}" = "${botname}, please dance with me." ];
       +        then
       +                if [ $(($RANDOM % 2)) -gt 0 ];
                        then
       -                        annna-say -c "#bitreich-en" "My favourite flower is the beer flower."
       -                        continue;
       -                fi
       +                        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
       +                annna-say -c "${channel}" "My favourite pleasure man is of course Gunther!"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, sudo make me a sandwich" ];
       +        then
       +                annna-say -c "${channel}" "Humans are no objects."
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, sudo please make me a sandwich" ];
       +        then
       +                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
       +                annna-say -c "${channel}" "${user}, bonjour !"
       +                return
       +        fi
       +
       +        if [ "${text}" = "${botname}, please help." ];
       +        then
       +                # 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
       +                annna-say -c "${user}" "»please show me your memes.« gets you all memes anna knows, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»can you show me the uptime please?« gets you the uptime, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please show me the load, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please give me the count of online users.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please tell me your favourite flower.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please tell me your favourite color.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please dance with me.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please distro-hop with me.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please dance.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»what's up?«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please update the phlog index.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»sudo make me a sandwich«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»sudo please make me a sandwich«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please tell me who is your favourite pleasure man.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»please roll a dice for me.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "»I'm bored.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "», be cool.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "», be cute.«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "», what is \$term?«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "», please turn on \$term«, ${user}."
       +                sleep 0.5
       +                annna-say -c "${user}" "», turn me on."
       +                sleep 0.5
       +                annna-say -c "${user}" "», please tech hype me."
       +                sleep 0.5
       +                annna-say -c "${user}" "», bonjour !"
       +                sleep 0.5
       +                annna-say -c "${user}" "»please help.« gives you this help listing, ${user}."
       +                return
       +        fi
       +}
        
       -                if [ "${text}" = "${botname}, please tell me your favourite color." ];
       -                then
       -                        annna-say -c "#bitreich-en" "My favourite color is yellow."
       -                        continue;
       -                fi
       +# Permissions
       +[ -d ${iiroot} ] && chmod o+rx ${iiroot}
       +[ -d ${iibase} ] && chmod o+rx ${iibase}
        
       -                if [ "${text}" = "${botname}, please dance." ];
       -                then
       -                        if [ $(($RANDOM % 2)) -gt 0 ];
       -                        then
       -                                annna-say -c "#bitreich-en" ',o/  o/_  _\o   _o_  \o\'
       -                        else
       -                                annna-say -c "#bitreich-en" '\o7 -o7 _o7 .o7 \o. \o_ \o- \o7'
       -                        fi
       -                        continue;
       -                fi
       +# All channels only requiring annna_common.
       +common_channels="#bitreich-en #bitreich-fr #bitreich-de #bitreich-nl #bitreich-it #bitreich-con #bitreich-scm #bitreich-cooking #bitreich-lawn #bitreich-tv"
       +for chan in $common_channels;
       +do
       +        [ -d "${iibase}/${chan}" ] \
       +                && chmod o+rx "${iibase}/${chan}"
       +        [ -p "${iibase}/${chan}/in" ] \
       +                && chmod o+w "${iibase}/${chan}/in"
       +done
       +
       +# Channels with extra features or external scripts.
       +## SCM (/scm/post-receive)
       +## This one is handled by common_channels.
        
       -                if [ "${text}" = "${botname}, please dance with me." ];
       -                then
       -                        if [ $(($RANDOM % 2)) -gt 0 ];
       -                        then
       -                                annna-say -c "#bitreich-en" "I am not that kind of woman."
       -                        else
       -                                annna-say -c "#bitreich-en" "Thank you! Let us dance! :-D"
       -                        fi
       -                                
       -                        continue;
       -                fi
       +## Radio (/br/radio/playlist.sh + this script)
       +[ -d "${iibase}/#bitreich-radio" ] \
       +        && chmod o+rx "${iibase}/#bitreich-radio"
       +[ -p "${iibase}/#bitreich-radio/in" ] \
       +        && chmod o+w "${iibase}/#bitreich-radio/in"
        
       -                if [ "${text}" = "${botname}, please tell me who is your favourite pleasure man." ];
       -                then
       -                        annna-say -c "#bitreich-en" "My favourite pleasure man is of course Gunther!"
       -                        continue;
       -                fi
        
       -                if [ "${text}" = "${botname}, sudo make me a sandwich" ];
       -                then
       -                        annna-say -c "#bitreich-en" "Humans are no objects."
       -                        continue;
       -                fi
       +# Channel handlers.
        
       -                if [ "${text}" = "${botname}, sudo please make me a sandwich" ];
       -                then
       -                        annna-say -c "#bitreich-en" "Here is your sandwich."
       -                        continue;
       -                fi
       +## Special handlers first.
       +if [ -f "${iibase}/#bitreich-radio/out" ];
       +then
       +{
       +        channel="#bitreich-radio"
       +        ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" \
       +                | grep -v --line-buffered '[0-9]* -!- ' \
       +                | sed -u 's,[0-9]* <\([^ >]*\)> \(.*\),\1\n\2,' \
       +                | {
       +        while read -r user;
       +        do
       +                read -r text
        
       -                if [ "${text}" = "${botname}, please update the phlog index." ];
       -                then
       -                        phlog-index > /dev/null 2>&1
       -                        annna-say -c "#bitreich-en" "Thanks! Your request has been fulfilled with the quickness! :)"
       -                        continue;
       -                fi
       +                [ "$user" = "${botname}" ] && continue
        
       -                if [ "${text}" = "${botname}, bonjour !" ];
       +                if [ "${text}" = "${botname}, next please." ];
                        then
       -                        annna-say -c "#bitreich-en" "${user}, bonjour !"
       +                        /br/bin/bitreich-radio-playlist-next
       +                        annna-say -c "${channel}" "You are very kind ${user}. To your command."
                                continue;
                        fi
        
                        if [ "${text}" = "${botname}, please help." ];
                        then
       -                        # 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
       -                        annna-say -c "${user}" "»please show me your memes.« gets you all memes anna knows, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»can you show me the uptime please?« gets you the uptime, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please show me the load, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please give me the count of online users.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please tell me your favourite flower.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please tell me your favourite color.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please dance with me.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please distro-hop with me.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please dance.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»what's up?«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please update the phlog index.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»sudo make me a sandwich«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»sudo please make me a sandwich«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please tell me who is your favourite pleasure man.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»please roll a dice for me.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "»I'm bored.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», be cool.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», be cute.«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», what is \$term?«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», please turn on \$term«, ${user}."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», turn me on."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», please tech hype me."
       -                        sleep 0.5
       -                        annna-say -c "${user}" "», bonjour !"
       -                        sleep 0.5
       +                        annna-say -c "${user}" "»next please.« gets the playlist further, ${user}."
                                annna-say -c "${user}" "»please help.« gives you this help listing, ${user}."
       +
       +                        # Give out common help too.
       +                        annna_common "${channel}" "${user}" "${text}"
                                continue;
                        fi
       +                
       +                # Allow common functions too.
       +                annna_common "${channel}" "${user}" "${text}"
                done
                }
        } &
        fi
        
       +## Common channel handler.
       +for channel in $common_channels;
       +do
       +        if [ -f "${iibase}/${channel}/out" ];
       +        then
       +        {
       +                ls "${iibase}/${channel}/out" | entr tail -n 1 "${iibase}/${channel}/out" \
       +                        | grep -v --line-buffered '[0-9]* -!- ' \
       +                        | sed -u 's,[0-9]* <\([^ >]*\)> \(.*\),\1\n\2,' \
       +                        | {
       +                while read -r user;
       +                do
       +                        read -r text
       +
       +                        annna_common "${channel}" "${user}" "${text}"
       +                done
       +                }
       +        } &
       +        fi
       +done
       +