2020-12-18 13:53:44 +00:00
|
|
|
#!/bin/bash
|
2020-12-16 16:41:14 +00:00
|
|
|
#===============================================================================
|
|
|
|
#
|
2020-12-24 10:41:40 +00:00
|
|
|
# FILE: bin/broadcast_message.sh
|
2020-12-16 16:41:14 +00:00
|
|
|
#
|
2020-12-24 17:20:39 +00:00
|
|
|
# USAGE: broadcast_message.sh [-h|--help] [--doit] [--groups|--both] [format] "message ...." [debug]
|
2020-12-16 16:41:14 +00:00
|
|
|
#
|
2020-12-24 17:20:39 +00:00
|
|
|
# DESCRIPTION: send a message to all users the bot have seen (listet in count.jssh)
|
2020-12-16 16:41:14 +00:00
|
|
|
#
|
|
|
|
# OPTIONS: --doit - broadcast is dangerous, simulate run without --doit
|
2020-12-24 17:20:39 +00:00
|
|
|
# --groups - send to groups instead of users
|
|
|
|
# --both - send to users and groups
|
2020-12-16 16:41:14 +00:00
|
|
|
#
|
|
|
|
# format - normal, markdown, html (optional)
|
|
|
|
# message - message to send in specified format
|
|
|
|
# if no format is givern send_message() format is used
|
|
|
|
#
|
|
|
|
# -h - display short help
|
|
|
|
# --help - this help
|
|
|
|
#
|
|
|
|
# Set BASHBOT_HOME to your installation directory
|
|
|
|
#
|
|
|
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
|
|
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
2020-12-18 13:53:44 +00:00
|
|
|
# CREATED: 16.12.2020 16:14
|
2020-12-16 16:41:14 +00:00
|
|
|
#
|
2020-12-25 20:47:08 +00:00
|
|
|
#### $$VERSION$$ v1.20-0-g2ab00a2
|
2020-12-16 16:41:14 +00:00
|
|
|
#===============================================================================
|
|
|
|
|
2020-12-18 13:53:44 +00:00
|
|
|
####
|
2020-12-16 16:41:14 +00:00
|
|
|
# broadcast is dangerous, without --doit we do a dry run ...
|
2020-12-24 17:20:39 +00:00
|
|
|
if [ "$1" = "--doit" ]; then
|
2020-12-16 16:41:14 +00:00
|
|
|
DOIT="yes"
|
|
|
|
shift
|
|
|
|
fi
|
|
|
|
|
2020-12-18 13:53:44 +00:00
|
|
|
####
|
2020-12-24 17:20:39 +00:00
|
|
|
# send to users by default, --group sends groups, --both to both
|
|
|
|
SENDTO="users"
|
|
|
|
if [ "$1" = "--both" ]; then
|
2020-12-16 16:41:14 +00:00
|
|
|
GROUPSALSO=" and groups"
|
|
|
|
shift
|
2020-12-24 17:20:39 +00:00
|
|
|
elif [ "$1" = "--groups" ]; then
|
|
|
|
SENDTO="groups"
|
|
|
|
GROUPSALSO=" only"
|
|
|
|
shift
|
2020-12-16 16:41:14 +00:00
|
|
|
fi
|
|
|
|
|
2020-12-18 13:53:44 +00:00
|
|
|
####
|
2020-12-16 16:41:14 +00:00
|
|
|
# parse args -----------------
|
|
|
|
SEND="send_message"
|
|
|
|
case "$1" in
|
|
|
|
"nor*"|"tex*")
|
|
|
|
SEND="send_normal_message"
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
"mark"*)
|
|
|
|
SEND="send_markdownv2_message"
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
"html")
|
|
|
|
SEND="send_html_message"
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
'')
|
|
|
|
echo "missing missing arguments"
|
|
|
|
;&
|
|
|
|
"-h"*)
|
2020-12-24 17:20:39 +00:00
|
|
|
echo 'usage: send_message [-h|--help] [--groups|--both] [format] "message ...." [debug]'
|
2020-12-16 16:41:14 +00:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
'--h'*)
|
|
|
|
sed -n '3,/###/p' <"$0"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2020-12-25 17:43:36 +00:00
|
|
|
# set bashbot environment
|
2020-12-17 07:43:30 +00:00
|
|
|
# shellcheck disable=SC1090
|
2020-12-25 17:43:36 +00:00
|
|
|
source "${0%/*}/bashbot_env.inc.sh" "$2" # $3 debug
|
|
|
|
|
2020-12-16 16:41:14 +00:00
|
|
|
|
|
|
|
# read in users
|
|
|
|
declare -A SENDALL
|
|
|
|
jssh_readDB_async "SENDALL" "${COUNTFILE}"
|
|
|
|
if [ -z "${SENDALL[*]}" ]; then
|
|
|
|
echo -e "${ORANGE}Countfile not found or empty,${NC} "
|
|
|
|
fi
|
|
|
|
|
|
|
|
# loop over users
|
2020-12-25 18:16:54 +00:00
|
|
|
echo -e "${GREEN}Sending broadcast message to all users of ${BOT_NAME}${NC}${GREY}\c"
|
2020-12-16 16:41:14 +00:00
|
|
|
|
|
|
|
{ # dry run
|
|
|
|
[ -z "${DOIT}" ] && echo -e "${NC}\n${ORANGE}DRY RUN! use --doit as first argument to execute broadcast...${NC}"
|
|
|
|
|
|
|
|
for USER in ${!SENDALL[*]}
|
|
|
|
do
|
2020-12-24 17:20:39 +00:00
|
|
|
# send to users, groups or both ...
|
2020-12-16 16:41:14 +00:00
|
|
|
[[ -z "${GROUPSALSO}" && "${USER}" == *"-"* ]] && continue
|
2020-12-24 17:20:39 +00:00
|
|
|
[[ "${SENDTO}" != "users" && "${USER}" != *"-"* ]] && continue
|
|
|
|
# ignore everything not a user or group
|
2020-12-16 16:41:14 +00:00
|
|
|
[[ ! "${USER}" =~ ^[0-9-]*$ ]] && continue
|
|
|
|
(( COUNT++ ))
|
|
|
|
if [ -z "${DOIT}" ]; then
|
|
|
|
echo "${SEND}" "${USER}" "$1" "$2"
|
|
|
|
else
|
|
|
|
"${SEND}" "${USER}" "$1" "$2"
|
|
|
|
echo -e ".\c" 1>&2
|
|
|
|
sleep 0.1
|
|
|
|
fi
|
|
|
|
done
|
2020-12-24 17:20:39 +00:00
|
|
|
echo -e "${NC}\nMessage \"$1\" sent to ${COUNT} ${SENDTO}${GROUPSALSO}."
|
2020-12-16 16:41:14 +00:00
|
|
|
} | more
|