happybot/happybot/common.sh

80 lines
1.4 KiB
Bash

#!/usr/bin/env ash
chan="$1";
serv="${serv:-irc.freenode.net}";
cd "/home/zgrep/offtopiabday" || exit 1;
var() { printf '%s\n' "$1"; }
say() { cat - > "$serv/$chan/in"; }
alias safe="sed 's%^/%//%'"
log="$serv/$chan/out";
irc() {
tail -n 0 -f "$serv/$chan/out" | while read -r l; do
var "$l" | sed 's/^[^<]*<//' | sed 's/>//';
done;
}
reg() {
r=$(var "$1" | sed 's%/%\\\/%g');
r=$(var "$2" | perl -ne '@m=m/'"$r"'/ or exit 1;printf join "\n", @m');
}
hreg() {
reg "$(var "$1" | sed 's/happybot/(?:[hH][aA][pP][pP][yY]|[hH][aA][tT][eE])[bB][oO][tT]/g')" "$2"
}
m() { var "$r" | sed -n "$1p"; }
zwsp=$(python3 -c 'print("\u200b",end="")');
zwsp() { cat - | sed 's%^\(/m \)\?%\1'"$zwsp"'%'; }
x01=$(python3 -c 'print("\x01",end="")');
zirc() {
irc | while read -r n l; do
l="$(var "$l" | grep -vE "^${zwsp}|^${x01}ACTION ${zwsp}")"
if [ -z "$l" ]; then
continue
else
var "$n $l"
fi
done
}
nth() {
case "$1" in
"11" | "12" | "13")
var "${1}th";
;;
*"1")
var "${1}st";
;;
*"2")
var "${1}nd";
;;
*"3")
var "${1}rd";
;;
*)
var "${1}th";
;;
esac;
}
s() {
if [ "$1" == "1" ]; then
var "";
else
var "s";
fi;
}
ns() { var "$1$(s "$1")"; }
rand() {
if [ -z "$1" ]; then f="-"; else f="$1"; fi
perl -e 'srand; rand($.) < 1 && ($line = $_) while <>; print $line;' "$f"
}
person() {
shuf -n100 "$serv/$chan/out" | grep -v -- '-!-' | rand | awk '{print$3}' | sed 's/^<\|>$//g';
}