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