til - 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 --- til (1459B) --- 1 #!/bin/sh 2 3 nick="${1}" 4 learned="${2}" 5 tilmodbase="$HOME/bin/modules/til" 6 tildb="${tilmodbase}/til.txt" 7 8 # Make sure there's a file to store the TILs. 9 if [ ! -f "${tildb}" ]; 10 then 11 mkdir -p "${tilmodbase}" 12 touch "${tildb}" 13 fi 14 15 # Make sure file is writable. 16 if [ ! -w "${tildb}" ]; 17 then 18 exit 1 19 fi 20 21 # Clean up the learned string. 22 learned="$(printf "%s" "${learned}" \ 23 | tr -d [:cntrl:] \ 24 | sed 's,\n, ,g')" 25 26 # Check to see if its already been learned. 27 already_learned_entry="$(grep -m 1 "${learned}" "${tildb}")" 28 if [ $? -eq 0 ]; # Match found (grep exit status of 0) 29 then 30 timestamp="$(printf "%s" "${already_learned_entry}" \ 31 | tr "\t" "\n" \ 32 | tail -n 1)" 33 user="$(printf "%s" "${already_learned_entry}" \ 34 | tr "\t" "\n" \ 35 | head -n 1)" 36 learned_text="$(printf "%s" "${already_learned_entry}" \ 37 | tr "\t" "\n" \ 38 | tail -n 2 \ 39 | head -n 1)" 40 paste="$(printf '%s\n%s learned %s\n' \ 41 '${timestamp}' \ 42 '${user}' \ 43 '${learned_text}' \ 44 | /br/bin/bitreich-paste)" 45 printf "looks like that's already been learned by %s on %s! %s" \ 46 "${user:-someone}" \ 47 "$(date -d "${timestamp}" +"%B %d, %Y")" \ 48 '${paste}' 49 exit 50 fi 51 52 # Add the new TIL to the database. 53 timestamp=$(date -u) 54 printf "%s\n" "${nick} ${learned} $(date -u)" \ 55 >> "${tildb}" 56 57 # Count users TILs 58 til_count="$(grep -cP "^${nick}\t" "${tildb}")" 59 60 # Successful return message. 61 printf "well done! You've learned ${til_count} things so far! o.o" 62 exit 0