Add brcon-score system for upcoming brcon2023. - annna - Annna the nice friendly bot.
(HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit a17d8c98291940275e88fa872143baaddcf951ba
(DIR) parent 49235cbd876bff8cb6a793373af83519b65c931c
(HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Sat, 5 Aug 2023 09:03:49 +0200
Add brcon-score system for upcoming brcon2023.
Diffstat:
M annna-message-common | 30 ++++++++++++++++++++++++++++++
A brcon-score | 75 +++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/annna-message-common b/annna-message-common
@@ -9,6 +9,7 @@ hashtagfile="${modbase}/hashtags/hashtags.txt"
idontcaredb="${modbase}/i-dont-care/i-dont-care.txt"
printnhashtags=2
brmembers="__20h__ Evil_Bob chripo posativ quinq stateless solene josuah parazyd bin KatolaZ adc"
+referees="__20h__"
server="$1"
ircuser="$(cat ${cfgbase}/${server}/ircuser)"
@@ -258,6 +259,9 @@ case "${text}" in
"${ircuser}, what the karma?")
annna-say -s "${server}" -c "${channel}" "${user}, gophers://bitreich.org/1/irc/karma"
;;
+"${ircuser}, what the brcon score?")
+ annna-say -s "${server}" -c "${channel}" "${user}, gophers://bitreich.org/1/con/$(date +%Y)/score"
+ ;;
"${ircuser}, what the shame?")
annna-say -s "${server}" -c "${channel}" "${user}, gophers://bitreich.org/1/irc/shame"
;;
@@ -1316,6 +1320,9 @@ case "${text}" in
*"arma is a bitch"*)
annna-say -s "${server}" -c "${channel}" "${user}, I object! Karma is a nice girl!"
;;
+"score "*)
+ # For referee scoring.
+ ;;
*++|*--|*-=?|*+=?|*+=-?|*-=-?)
karmatext="$(karma "${text}")"
if [ -n "$karmatext" ];
@@ -1349,3 +1356,26 @@ case "${text}" in
;;
esac
+# Referee Level.
+isreferee=0
+for referee in $referees;
+do
+ [ "$user" = "$referee" ] && isreferee=1
+done
+[ $isreferee -lt 1 ] && exit
+
+case "${text}" in
+"score "*)
+ text="$(printf "%s\n" "${text}" | cut -d' ' -f2-)"
+ case "${text}" in
+ *++|*--|*-=?|*+=?|*+=-?|*-=-?)
+ scoretext="$(brcon-score "${text}")"
+ if [ -n "$scoretext" ];
+ then
+ annna-say -s "${server}" -c "${channel}" "score: ${scoretext}"
+ fi
+ ;;
+ esac
+ ;;
+esac
+
(DIR) diff --git a/brcon-score b/brcon-score
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+karmamodbase="$HOME/bin/modules/brcon-score"
+karmadb="${karmamodbase}/score-$(date +%Y).txt"
+
+function setkarmaval {
+ if [ -n "$(grep -P "^${1}\t" "${karmadb}")" ];
+ then
+ sed -i "s,^${1}\t.*,${1}\t${2}," "${karmadb}"
+ else
+ printf "%s\t%d\n" "${1}" "${2}" >> "${karmadb}"
+ fi
+}
+
+function parsekarma {
+ karmatag="$(printf "%s\n" "${1}" | sed -e 's,^\([a-zA-Z_0-9]*\).*$,\1,')"
+ [ -z "${karmatag}" ] && karmatag="karma"
+ printf "%s\n" "${karmatag}"
+}
+
+function getkarmaval {
+ karmatag="${1}"
+ karmaval="$(grep -P "^${karmatag}\t" "${karmadb}" | cut -f 2)"
+ [ -z "${karmaval}" ] && printf "0\n"
+ printf "%s\n" "${karmaval}"
+}
+
+function modifykarma {
+ karmatag="$1"
+ karmaval=$(getkarmaval "${karmatag}")
+ newkarmaval="$(printf "%d%s\n" "${karmaval}" "$2" | bc)"
+ setkarmaval "${karmatag}" $newkarmaval
+ printf "%s = %d\n" "$karmatag" "$newkarmaval"
+}
+
+function inckarma {
+ modifykarma "$1" " + $2"
+}
+
+function deckarma {
+ modifykarma "$1" " - $2"
+}
+
+function parsechangevalue {
+ printf "%s\n" "${1}" | sed -e 's,.*[+|-]=\([0-9\-]*\),\1,'
+}
+
+karmastr="$1"
+karmatag="$(parsekarma "${karmastr}")"
+case "${karmastr}" in
+*" "*)
+ ;;
+*","*)
+ ;;
+*+=*)
+ inckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
+ ;;
+*++)
+ inckarma "${karmatag}" "1"
+ ;;
+*-=*)
+ deckarma "${karmatag}" "$(parsechangevalue "${karmastr}")"
+ ;;
+*--)
+ deckarma "${karmatag}" "1"
+ ;;
+"${karmatag}")
+ karmaval="$(getkarmaval "${karmatag}")"
+ printf "%s = %d\n" "$karmatag" "$karmaval"
+ ;;
+*)
+ sort -r -k 2 "${karmadb}" | column -t
+ ;;
+esac
+