Update 'bot.sh'

This commit is contained in:
verita84 2023-03-20 20:26:33 +00:00
parent 6c95984aac
commit e1c887287c

169
bot.sh
View File

@ -9,110 +9,113 @@ STATS_MESSAGE="Daily Block Stats for: $ENDPOINT"
############################ ############################
cd /opt cd /opt
blocks(){ blocks() {
#TIME_STAMP="`date +%y-%m-%d` `date +%H`" #TIME_STAMP="`date +%y-%m-%d` `date +%H`"
TIME_STAMP="`date +%y-%m-%d` `date +%H:%M`" TIME_STAMP="$(date +%y-%m-%d) $(date +%H:%M)"
TIME=`echo $TIME_STAMP | sed 's/.$//'` TIME=$(echo $TIME_STAMP | sed 's/.$//')
data='' data=''
echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep "$TIME" > /tmp/list
readarray -t list < /tmp/list echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep "$TIME" >/tmp/list
for i in "${list[@]}" readarray -t list </tmp/list
do
:
json=`echo $i | cut -d '{' -f2-3 | cut -d '}' -f1 | sed '1 i\{' | sed '$a } '`
blocker="`echo $json | jq -r .actor | cut -d '/' -f5`@`echo $json | jq -r .actor | cut -d '/' -f3`" for i in "${list[@]}"; do
:
json=$(echo $i | cut -d '{' -f2-3 | cut -d '}' -f1 | sed '1 i\{' | sed '$a } ')
blocked="@`echo $json | jq -r .object | cut -d '/' -f5`@`echo $json | jq -r .object | cut -d '/' -f3`" blocker="$(echo $json | jq -r .actor | cut -d '/' -f5)@$(echo $json | jq -r .actor | cut -d '/' -f3)"
profile=`echo $json | jq -r .actor` blocked="@$(echo $json | jq -r .object | cut -d '/' -f5)@$(echo $json | jq -r .object | cut -d '/' -f3)"
message="BLOCK ALERT! $blocker blocked $blocked. Profile is available at: $profile" profile=$(echo $json | jq -r .actor)
message="BLOCK ALERT! $blocker blocked $blocked. Profile is available at: $profile"
if [ -n "$1" ]; then if [ -n "$1" ]; then
echo $message echo $message
else else
echo $message echo $message
toot post "$message" -m ./bot.png toot post "$message" -m ./bot.png
fi fi
done done
} }
scalps(){ scalps() {
users=( $(echo "select nickname from users where ap_id like '%${ENDPOINT}%';" | PGPASSWORD=sql psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE --csv | egrep -vi 'relay|nickname|internal.fetch') ); users=($(echo "select nickname from users where ap_id like '%${ENDPOINT}%';" | PGPASSWORD=sql psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE --csv | egrep -vi 'relay|nickname|internal.fetch'))
echo > /tmp/a.txt echo >/tmp/a.txt
for i in "${users[@]}" for i in "${users[@]}"; do
do :
: number=$(echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l)
number=`echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l` if [ $number -gt 1 ]; then
if [ $number -gt 1 ]; echo "@$i: $(echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l)! " >>/tmp/a.txt
then fi
echo "@$i: ` echo "select * from activities where data->>'type' = 'Block';" | PGPASSWORD=$SQL_PASS psql -h $SQL_HOST -U $SQL_USER $SQL_DATABASE | grep -i "$ENDPOINT/users/$i" | cut -d '"' -f18 | grep -iv $ENDPOINT | wc -l`! " >> /tmp/a.txt done
fi
done
data="$STATS_MESSAGE `cat /tmp/a.txt | sort -n -k 2`" data="$STATS_MESSAGE $(cat /tmp/a.txt | sort -n -k 2)"
if [ -n "$1" ]; then if [ -n "$1" ]; then
echo $data echo $data
else else
echo $data | toot post "$data" echo $data | toot post "$data"
fi fi
} }
background_daemon() {
echo
echo "BlockBot running in Daemon Mode"
echo
echo
while true; do
echo "#######################################"
echo "Current Time: $(date)"
if [[ $(date | cut -d ':' -f2 | tail -c2) == *"9"* ]]; then
background_daemon(){ echo "Checking for new blocks......."
echo;echo "BlockBot running in Daemon Mode";echo;echo echo
while true blocks
do fi
echo "#######################################" if [[ $(date) == *"16:30:"* ]]; then
echo "Current Time: `date`" echo "Sending Block Report......."
echo
if [[ `date | cut -d ':' -f2 | tail -c2` == *"9"* ]]; then scalps
echo "Checking for new blocks.......";echo fi
blocks blocks print
fi echo "Sleeping for 50......"
if [[ `date` == *"16:30:"* ]]; then echo "#######################################"
echo "Sending Block Report.......";echo sleep 50
scalps
fi
blocks print
echo "Sleeping for 50......"
echo "#######################################";
sleep 50
done done
} }
background(){ background() {
if [[ `date` == *":00"* ]]; then if [[ $(date) == *":00"* ]]; then
background_daemon background_daemon
else else
echo "Waiting for time to be in sync...." echo "Waiting for time to be in sync...."
sleep 1 sleep 1
background background
fi fi
} }
help(){ help() {
echo;echo "bot.sh daemon" echo
echo;echo "bot.sh blocks" echo "bot.sh daemon"
echo;echo "bot.sh blocks print" echo
echo "bot.sh scalps" echo "bot.sh blocks"
echo "bot.sh scalps print" echo
echo "bot.sh help";echo;echo echo "bot.sh blocks print"
} echo "bot.sh scalps"
echo "bot.sh scalps print"
echo "bot.sh help"
echo
echo
}
if [ "$1" = "daemon" ]; then if [ "$1" = "daemon" ]; then
background background
elif [ "$1" = "blocks" ]; then elif [ "$1" = "blocks" ]; then
blocks "$2" blocks "$2"
elif [ "$1" = "scalps" ]; then elif [ "$1" = "scalps" ]; then
scalps "$2" scalps "$2"
else else
help help
fi fi