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 +