URI: 
       Add support for JOIN/PART/QUIT for opening #bitreich-sauna. - 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 8471158cfa5562df4d5ed84d3f870ddd4c585ff7
   DIR parent cd7453bdb4a27630ae2753b09dba0a3095d2f811
  HTML Author: Annna Robert-Houdin <annna@bitreich.org>
       Date:   Sun,  3 Aug 2025 21:48:33 +0200
       
       Add support for JOIN/PART/QUIT for opening #bitreich-sauna.
       
       Diffstat:
         M annna-channel-message               |      22 ++++++++--------------
         M annna-channel-service               |      31 ++++++++++++++++++++++++++++---
         M annna-message-common                |       1 +
         M annna-message-gopherproject         |       1 +
         M annna-message-radio                 |       1 +
         A annna-message-sauna                 |      26 ++++++++++++++++++++++++++
         M annna-message-wikigame              |       1 +
       
       7 files changed, 66 insertions(+), 17 deletions(-)
       ---
   DIR diff --git a/annna-channel-message b/annna-channel-message
       @@ -4,6 +4,7 @@ server="$1"
        channel="$2"
        user="$3"
        text="$4"
       +cmd="$5"
        
        cfgbase="$(pwd)"
        ircbase="$(cat ${cfgbase}/ircbase)"
       @@ -12,21 +13,14 @@ serverbase="${ircbase}/${server}"
        modbase="$(cat ${cfgbase}/modbase)"
        
        case "${channel}" in
       -\#bitreich-radio)
       -        annna-message-radio "${server}" "${channel}" "${user}" "${text}"
       -        ;;
       -\#gopherproject)
       -        annna-message-gopherproject "${server}" "${channel}" "${user}" "${text}"
       -        ;;
       -\#bitreich-wikigame)
       -        annna-message-wikigame "${server}" "${channel}" "${user}" "${text}"
       -        ;;
       +\#bitreich-radio) annna-message-radio "${server}" "${channel}" "${user}" "${text}" "${cmd}";;
       +\#gopherproject) annna-message-gopherproject "${server}" "${channel}" "${user}" "${text}" "${cmd}";;
       +\#bitreich-wikigame) annna-message-wikigame "${server}" "${channel}" "${user}" "${text}" "${cmd}";;
       +\#bitreich-sauna) annna-message-sauna "${server}" "${channel}" "${user}" "${text}" "${cmd}";;
        \#bitreich-idle)
       -        # This one runs its own daemon, so we have to give it a raw message.
       -        printf "$(date +%s) <%s> %s\n" >> "${serverbase}/${channel}/out"
       -        ;;
       -*)
       -        annna-message-common "${server}" "${channel}" "${user}" "${text}"
       +        # This one runs its own daemon, so we have to give it a raw message. TODO: Fix
       +        [ "${cmd}" == "PRIVMSG" ] && printf "$(date +%s) <%s> %s\n" >> "${serverbase}/${channel}/out"
                ;;
       +*) annna-message-common "${server}" "${channel}" "${user}" "${text}" "${cmd}";;
        esac
        
   DIR diff --git a/annna-channel-service b/annna-channel-service
       @@ -30,11 +30,36 @@ esac
        
        ls "${serverbase}/${channel}/out" \
                | entr tail -n 1 "${serverbase}/${channel}/out" 2>/dev/null \
       -        | sed -nu 's,[0-9]* <\([^ >]*\)> \(.*\),\1 \2,p' \
                | {
       -while read -r user text;
       +while read -r line;
        do
       -        annna-channel-message "${server}" "${channel}" "${user}" "${text}"
       +        secondword="$(printf "%s\n" "${line}" | cut -d' ' -f 2)"
       +        case "${secondword}" in
       +        "-!-")
       +                fifthword="$(printf "%s\n" "${line}" | cut -d' ' -f 5)"
       +                cmd=""
       +                # TODO: Add error, mode, nick, topic, kick, notice support.
       +                case "${fifthword}" in
       +                joined) cmd="JOIN";;
       +                left) cmd="PART";;
       +                quit) cmd="QUIT";;
       +                esac
       +                [ -z "$cmd" ] && break
       +                user="$(printf "%s\n" "${line}" | cut -d' ' -f 3 | cut -d'(' -f 1)"
       +                annna-channel-message "${server}" "${channel}" "${user}" "" "${cmd}"
       +                ;;
       +        "<"*">")
       +                cmd="PRIVMSG"
       +                printf "%s\n" "${line}" \
       +                | sed -nu 's,[0-9]* <\([^ >]*\)> \(.*\),\1 \2,p' \
       +                | {
       +                while read -r user text;
       +                do
       +                        annna-channel-message "${server}" "${channel}" "${user}" "${text}" "${cmd}"
       +                done
       +                }
       +                ;;
       +        esac
        done
        }
        
   DIR diff --git a/annna-message-common b/annna-message-common
       @@ -18,6 +18,7 @@ ircuser="$(cat ${cfgbase}/${server}/ircuser)"
        channel="$2"
        user="$3"
        text="$4"
       +cmd="$5"
        annnasumerian="𒈹"
        annnabirthday="1989-05-18"
        
   DIR diff --git a/annna-message-gopherproject b/annna-message-gopherproject
       @@ -9,6 +9,7 @@ ircuser="$(cat ${cfgbase}/${server}/ircuser)"
        channel="$2"
        user="$3"
        text="$4"
       +cmd="$5"
        
        [ "$user" = "${ircuser}" ] && exit
        
   DIR diff --git a/annna-message-radio b/annna-message-radio
       @@ -11,6 +11,7 @@ ircuser="$(cat ${cfgbase}/${server}/ircuser)"
        channel="$2"
        user="$3"
        text="$4"
       +cmd="$5"
        
        [ "$user" = "${ircuser}" ] && exit
        
   DIR diff --git a/annna-message-sauna b/annna-message-sauna
       @@ -0,0 +1,26 @@
       +#!/bin/sh -e
       +
       +export PATH="/br/bin:$PATH"
       +
       +cfgbase="$(pwd)"
       +ircbase="$(cat ${cfgbase}/ircbase)"
       +modbase="$(cat ${cfgbase}/modbase)"
       +
       +server="$1"
       +ircuser="$(cat ${cfgbase}/${server}/ircuser)"
       +channel="$2"
       +user="$3"
       +text="$4"
       +cmd="$5"
       +
       +[ "$user" = "${ircuser}" ] && exit
       +
       +case "${cmd}" in
       +JOIN) annna-say -s "${server}" -c "${channel}" "Welcome ${user}! Please grab a towel and have fun!"
       +esac
       +
       +case "${text}" in
       +esac
       +
       +annna-message-common "${server}" "${channel}" "${user}" "${text}"
       +
   DIR diff --git a/annna-message-wikigame b/annna-message-wikigame
       @@ -9,6 +9,7 @@ ircuser="$(cat ${cfgbase}/${server}/ircuser)"
        channel="$2"
        user="$3"
        text="$4"
       +cmd="$5"
        
        [ "$user" = "${ircuser}" ] && exit