Add TIL command for annnna - 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 cb81412efa9ed5137013987f5b676d9f8785917a
 (DIR) parent f7fc5dfb75555f14e781c15a30eeab2581e42e49
 (HTM) Author: Scarlett McAllister <no+reply@roygbyte.com>
       Date:   Mon, 23 Oct 2023 22:53:08 -0300
       
       Add TIL command for annnna
       
       Signed-off-by: Annna Robert-Houdin <annna@bitreich.org>
       
       Diffstat:
         M annna-message-common                |      18 ++++++++++++++++++
         A til                                 |      62 +++++++++++++++++++++++++++++++
       
       2 files changed, 80 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/annna-message-common b/annna-message-common
       @@ -1238,6 +1238,24 @@ case "${text}" in
                taguri="$(printf "%s\n" "${tagline}" | cut -d ' ' -f 2-)"
                annna-say -s "${server}" -c "${channel}" "${tagname}: ${taguri}"
                ;;
       +"${ircuser}, TIL "*)
       +        minimum_learned_len=12
       +        offset=$(( ${#ircuser} + 6 ))
       +        learned="$(printf "%s\n" "${text}" \
       +                | cut -c $offset- \
       +                | sed 's,\t,    ,g')"
       +        if [ ${#learned} -le $minimum_learned_len ];
       +        then
       +                annna-say -s "${server}" -c "${channel}" "${user}, can you explain better what you learned?"
       +        else
       +                result="$(til ${user} "${learned}")"
       +                if [ $? -eq 0 ];
       +                then
       +                        annna-say -s "${server}" -c "${channel}" "${user}, ${result}"
       +                fi
       +        fi
       +        ;;
       +
        esac
        
        printf '%s' "$text" | awk -v taglimit="$printnhashtags" '
 (DIR) diff --git a/til b/til
       @@ -0,0 +1,62 @@
       +#!/bin/sh
       +
       +nick="${1}"
       +learned="${2}"
       +tilmodbase="$HOME/bin/modules/til"
       +tildb="${tilmodbase}/til.txt"
       +
       +# Make sure there's a file to store the TILs.
       +if [ ! -f "${tildb}" ];
       +then
       +    mkdir -p "${tilmodbase}"
       +    touch "${tildb}"
       +fi
       +
       +# Make sure file is writable.
       +if [ ! -w "${tildb}" ];
       +then
       +    exit 1
       +fi
       +
       +# Clean up the learned string.
       +learned="$(printf "%s" "${learned}" \
       +        | tr -d [:cntrl:] \
       +        | sed 's,\n, ,g')"
       +
       +# Check to see if its already been learned.
       +already_learned_entry="$(grep -m 1 "${learned}" "${tildb}")"
       +if [ $? -eq 0 ]; # Match found (grep exit status of 0)
       +then
       +    timestamp="$(printf "%s" "${already_learned_entry}" \
       +        | tr "\t" "\n" \
       +        | tail -n 1)"
       +    user="$(printf "%s" "${already_learned_entry}" \
       +        | tr "\t" "\n" \
       +        | head -n 1)"
       +    learned_text="$(printf "%s" "${already_learned_entry}" \
       +        | tr "\t" "\n" \
       +        | tail -n 2 \
       +        | head -n 1)"
       +    paste="$(printf '%s\n%s learned %s\n' \
       +                '${timestamp}' \
       +                '${user}' \
       +                '${learned_text}' \
       +;                | /br/bin/bitreich-paste)"
       +    printf "looks like that's already been learned by %s on %s! %s" \
       +                "${user:-someone}" \
       +                "$(date -d "${timestamp}" +"%B %d, %Y")" \
       +                '${paste}'
       +    exit
       +fi
       +
       +# Add the new TIL to the database.
       +timestamp=$(date -u)
       +printf "%s\n" "${nick}        ${learned}        $(date -u)" \
       +       >> "${tildb}"
       +
       +# Count users TILs
       +til_count="$(grep -cP "^${nick}\t" "${tildb}")"
       +
       +# Successful return message. 
       +printf "well done! You've learned ${til_count} things so far! o.o"
       +exit 0