Add shame support to annna. - 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 09c740a9cdf03b74580cb372da069f5b84fc8456
DIR parent 9730d242d08343ad65bdb9c5d20e7a26750579e3
HTML Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Sun, 3 Apr 2022 17:54:14 +0200
Add shame support to annna.
Diffstat:
M annna-message-common | 9 ++++++++-
A shame | 39 +++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 1 deletion(-)
---
DIR diff --git a/annna-message-common b/annna-message-common
@@ -207,6 +207,9 @@ case "${text}" in
"${botname}, what the karma?")
annna-say -s "${server}" -c "${channel}" "${user}, gopher://bitreich.org/1/irc/karma"
;;
+"${botname}, what the shame?")
+ annna-say -s "${server}" -c "${channel}" "${user}, gopher://bitreich.org/1/irc/shame"
+ ;;
*"don't care"*)
dontcaresay="$(shuf -n 1 ${idontcaredb})"
annna-say -s "${server}" -c "${channel}" "${user}, ${dontcaresay}"
@@ -1045,8 +1048,12 @@ case "${text}" in
;;
esac
-# Always keep the karma last!
+# Always keep the karma / shame last!
case "${text}" in
+*"-shaming"*)
+ shametext="$(printf "%s\n" "${text}" | sed 's,.* \(.*-shaming\).*,\1,')"
+ shame "${shametext}"
+ ;;
*++|*--)
karma "${text}"
;;
DIR diff --git a/shame b/shame
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+shamemodbase="$HOME/bin/modules/shame"
+shamedb="${shamemodbase}/shame.txt"
+
+function getshameval {
+ shameval="$(grep "^$1" "${shamedb}" | cut -f 2)"
+ [ -z "${shameval}" ] && printf "0\n"
+ printf "%s\n" "${shameval}"
+}
+
+function setshameval {
+ if [ -n "$(grep "^${1}" "${shamedb}")" ];
+ then
+ sed -i "s,${1}\t.*,${1}\t${2}," "${shamedb}"
+ else
+ printf "%s\t%d\n" "${1}" "${2}" >> "${shamedb}"
+ fi
+}
+
+function modifyshame {
+ shametag="$1"
+ shameval=$(getshameval "${shametag}")
+ newshameval="$(printf "%d%s\n" "${shameval}" "$2" | bc)"
+ setshameval "${shametag}" $newshameval
+}
+
+function incshame {
+ modifyshame "$1" " + 1"
+}
+
+shamestr="$1"
+if [ -n "${shamestr}" ];
+then
+ incshame "${shamestr}"
+else
+ sort -r -k 2 "${shamedb}" | column -t
+fi
+