annna-say - 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 --- annna-say (1611B) --- 1 #!/bin/sh 2 # 3 # annna-say -s irc.bitreich.org -c '#bitreich-en' Hello World! 4 # annna-say -c 'irc.bitreich.org/#bitreich-en' Hello World! 5 # 6 7 if [ "$(basename "$0")" = "annna-cmd" ]; 8 then 9 outfile="out" 10 else 11 outfile="in" 12 fi 13 14 export PATH="$PATH:/home/annna/bin" 15 16 usage() { 17 printf "usage: %s [-h] [-i ircbase] [-s server] -c \"[server/]channel0 ... [server/]channel1 ...\" text\n" \ 18 "$(basename "$1")" >&2 19 exit 1 20 } 21 22 channels="" 23 server="irc.bitreich.org" 24 ircbase="/home/annna/irc" 25 26 while getopts "hb:c:s:" opt; 27 do 28 case $opt in 29 b) 30 ircbase="$OPTARG" 31 ;; 32 c) 33 channels="$OPTARG" 34 ;; 35 s) 36 server="$OPTARG" 37 ;; 38 *) 39 usage $0 40 ;; 41 esac 42 done 43 shift $(expr $OPTIND - 1) 44 45 [ -z "$channels" ] && usage $0 46 47 # If annna is not alive, do not bother. 48 annna-alive || exit 0 49 [ -e "${ircbase}/annna-is-sleeping" ] && exit 0 50 51 for c in $channels; 52 do 53 case "${c}" in 54 *"/"*) 55 cserver="$(printf "%s\n" "${c}" | cut -d'/' -f 1)" 56 cname="$(printf "%s\n" "${c}" | cut -d'/' -f 2)" 57 ;; 58 *) 59 cserver="${server}" 60 cname="${c}" 61 ;; 62 esac 63 64 ircpath="${ircbase}/${cserver}/${cname}" 65 if [ -e "$ircpath/in" ]; 66 then 67 case "${outfile}" in 68 "in") 69 printf "%s\n" "$@" | fold -w 250 -s > "${ircpath}/${outfile}" 70 ;; 71 "out") 72 printf "%s <%s> %s\n" "$(date +%s)" "annna-cmd" "$@" \ 73 > "${ircpath}/${outfile}" 74 ;; 75 esac 76 else 77 ircpath="${ircbase}/${cserver}" 78 # Might be a user. Do not bother with outfile, he/she is not in our control. 79 printf "%s\n" "$@" \ 80 | fold -w 250 -s \ 81 | while read -r line; 82 do 83 printf "/j %s %s\n" "$c" "$line" > "${ircpath}/in" 84 done 85 fi 86 87 done 88 89 exit 0 90