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