mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-26 09:16:28 +00:00
factor out broadcast command
This commit is contained in:
parent
e6223b6645
commit
16448a9f60
115
bin/send_broadcast.sh
Executable file
115
bin/send_broadcast.sh
Executable file
@ -0,0 +1,115 @@
|
||||
#!/bin/bash -
|
||||
#===============================================================================
|
||||
#
|
||||
# FILE: broadcast_message.sh
|
||||
#
|
||||
# USAGE: broadcast_message.sh [-h|--help] [--doit] [--groups] [format] "message ...." [debug]
|
||||
#
|
||||
# DESCRIPTION: send a message to all user the bot have seen (listet in count.jssh)
|
||||
#
|
||||
# OPTIONS: --doit - broadcast is dangerous, simulate run without --doit
|
||||
# --groups - send to groups also, by default we send only to users
|
||||
#
|
||||
# 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
|
||||
# CREATED: 16.12.2020 16:14:57
|
||||
#
|
||||
#### $$VERSION$$ v1.2-dev2-30-ge6223b6
|
||||
#===============================================================================
|
||||
|
||||
# set where your bashbot lives
|
||||
# shellcheck disable=SC1090
|
||||
BASHBOT_HOME="${BASHBOTHOME:-../}"
|
||||
|
||||
# check for botconfig.jssh
|
||||
if [ ! -r "${BASHBOT_HOME}/botconfig.jssh" ]; then
|
||||
echo "No bashbot config file in ${BASHBOT_HOME}"
|
||||
exit 3
|
||||
fi
|
||||
# check for count.jssh
|
||||
if [ ! -r "${BASHBOT_HOME}/count.jssh" ]; then
|
||||
echo "No bashbot count file in ${BASHBOT_HOME}"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# broadcast is dangerous, without --doit we do a dry run ...
|
||||
if [ "$1" == "--doit" ]; then
|
||||
DOIT="yes"
|
||||
shift
|
||||
fi
|
||||
|
||||
# send to users by default, --group sends to groups also
|
||||
if [ "$1" == "--groups" ]; then
|
||||
GROUPSALSO=" and groups"
|
||||
shift
|
||||
fi
|
||||
|
||||
# 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"*)
|
||||
echo "usage: send_message [-h|--help] [format] "message ...." [debug]"
|
||||
exit 1
|
||||
;;
|
||||
'--h'*)
|
||||
sed -n '3,/###/p' <"$0"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# source bashbot
|
||||
source "${BASHBOT_HOME}/bashbot.sh" source "$3"
|
||||
|
||||
# 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
|
||||
echo -e "${GREEN}Sending broadcast message to all users of $(getConfigKey "botname")${NC}${GREY}\c"
|
||||
|
||||
{ # 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
|
||||
# ignore everything not a user or group
|
||||
[[ -z "${GROUPSALSO}" && "${USER}" == *"-"* ]] && continue
|
||||
[[ ! "${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
|
||||
echo -e "${NC}\nMessage \"$1\" sent to ${COUNT} users${GROUPSALSO}."
|
||||
} | more
|
Loading…
Reference in New Issue
Block a user