2018-08-14 07:08:26 +00:00
|
|
|
#!/usr/bin/env ash
|
|
|
|
|
|
|
|
chan="$1";
|
2021-06-19 18:28:46 +00:00
|
|
|
serv="${serv:-irc.freenode.net}";
|
2018-08-14 07:08:26 +00:00
|
|
|
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() {
|
2021-06-19 18:28:46 +00:00
|
|
|
tail -n 0 -f "$serv/$chan/out" | while read -r l; do
|
2018-08-14 07:08:26 +00:00
|
|
|
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"'%'; }
|
2021-06-19 18:28:46 +00:00
|
|
|
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
|
|
|
|
}
|
2018-08-14 07:08:26 +00:00
|
|
|
|
|
|
|
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';
|
|
|
|
}
|
2021-06-19 20:50:03 +00:00
|
|
|
|
|
|
|
kvnum() {
|
|
|
|
(
|
|
|
|
flock -s 200
|
|
|
|
sed 's/ .*//' "$1" | grep -Fnx -e "$2" | sed 's/:.*//'
|
|
|
|
) 200>"$1.lock"
|
|
|
|
}
|
|
|
|
|
|
|
|
kvget() {
|
|
|
|
num="$(kvnum "$1" "$2")"
|
|
|
|
if ! [ -z "$num" ]; then
|
|
|
|
sed -n "$num"'s/^\([^ ]* \)* //p' "$1"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
kvset() {
|
|
|
|
num="$(kvnum "$1" "$2")"
|
|
|
|
if [ -z "$num" ]; then
|
|
|
|
var "$2 $3" >> "$1"
|
|
|
|
else
|
|
|
|
printf '' > "$1.new"
|
|
|
|
if [ "$num" != "1" ]; then
|
|
|
|
sed -n '1,'"$(($num - 1))"'p' "$1" >> "$1.new"
|
|
|
|
fi
|
|
|
|
var "$2 $3" >> "$1.new"
|
|
|
|
sed -n "$(($num + 1))"',$p' "$1" >> "$1.new"
|
|
|
|
mv -f "$1.new" "$1"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
kvdel() {
|
|
|
|
num="$(kvnum "$1" "$2")"
|
|
|
|
if ! [ -z "$num" ]; then
|
|
|
|
sed -i "$num"'d' "$1"
|
|
|
|
fi
|
|
|
|
}
|