mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-12-02 03:18:18 +00:00
120 lines
4.0 KiB
Bash
120 lines
4.0 KiB
Bash
#!/bin/bash
|
|
# file: modules/background.sh
|
|
# do not edit, this file will be overwritten on update
|
|
|
|
# This file is public domain in the USA and all free countries.
|
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
|
#
|
|
#### $$VERSION$$ v0.70-pre1-0-g490c472
|
|
|
|
# source from commands.sh if you want ro use interactive or background jobs
|
|
|
|
## to statisfy shellcheck
|
|
export res
|
|
|
|
####
|
|
# I placed send_message here because main use case is interactive chats and background jobs
|
|
send_message() {
|
|
local text arg keyboard btext burl no_keyboard file lat long title address sent
|
|
[ "$2" = "" ] && return
|
|
local mychat="$1"
|
|
text="$(sed <<< "${2}" 's/ mynewlinestartshere /\r\n/g; s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
arg="$3"
|
|
[ "$arg" != "safe" ] && {
|
|
no_keyboard="$(sed <<< "${2}" '/mykeyboardendshere/!d;s/.*mykeyboardendshere.*/mykeyboardendshere/')"
|
|
keyboard="$(sed <<< "${2}" '/mykeyboardstartshere /!d;s/.*mykeyboardstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
btext="$(sed <<< "${2}" '/mybtextstartshere /!d;s/.*mybtextstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
burl="$(sed <<< "${2}" '/myburlstartshere /!d;s/.*myburlstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
file="$(sed <<< "${2}" '/myfilelocationstartshere /!d;s/.*myfilelocationstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
lat="$(sed <<< "${2}" '/mylatstartshere /!d;s/.*mylatstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
long="$(sed <<< "${2}" '/mylongstartshere /!d;s/.*mylongstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
title="$(sed <<< "${2}" '/mytitlestartshere /!d;s/.*mytitlestartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
address="$(sed <<< "${2}" '/myaddressstartshere /!d;s/.*myaddressstartshere //g;s/ my[kfltab][a-z]\{2,13\}startshere.*//g;s/ mykeyboardendshere.*//g')"
|
|
}
|
|
if [ "$no_keyboard" != "" ]; then
|
|
remove_keyboard "$mychat" "$text"
|
|
sent=y
|
|
fi
|
|
if [ "$keyboard" != "" ]; then
|
|
if [[ "$keyboard" != *"["* ]]; then # pre 0.60 style
|
|
keyboard="[ ${keyboard//\" \"/\" \] , \[ \"} ]"
|
|
fi
|
|
send_keyboard "$mychat" "$text" "$keyboard"
|
|
sent=y
|
|
fi
|
|
if [ "$btext" != "" ] && [ "$burl" != "" ]; then
|
|
send_button "$mychat" "$text" "$btext" "$burl"
|
|
sent=y
|
|
fi
|
|
if [ "$file" != "" ]; then
|
|
send_file "$mychat" "$file" "$text"
|
|
sent=y
|
|
fi
|
|
if [ "$lat" != "" ] && [ "$long" != "" ]; then
|
|
if [ "$address" != "" ] && [ "$title" != "" ]; then
|
|
send_venue "$mychat" "$lat" "$long" "$title" "$address"
|
|
else
|
|
send_location "$mychat" "$lat" "$long"
|
|
fi
|
|
sent=y
|
|
fi
|
|
if [ "$sent" != "y" ];then
|
|
send_text "$mychat" "$text"
|
|
fi
|
|
|
|
}
|
|
|
|
send_text() {
|
|
case "$2" in
|
|
html_parse_mode*)
|
|
send_html_message "$1" "${2//html_parse_mode}"
|
|
;;
|
|
markdown_parse_mode*)
|
|
send_markdown_message "$1" "${2//markdown_parse_mode}"
|
|
;;
|
|
*)
|
|
send_normal_message "$1" "$2"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
######
|
|
# interactive and background functions
|
|
|
|
background() {
|
|
echo "${CHAT[ID]}:$2:$1" >"${TMPDIR:-.}/${copname:--}$2-back.cmd"
|
|
startproc "$1" "back-$2-"
|
|
}
|
|
|
|
startproc() {
|
|
killproc "$2"
|
|
local fifo="$2${copname}"
|
|
mkfifo "${TMPDIR:-.}/${fifo}"
|
|
tmux new-session -d -s "${fifo}" "$1 &>${TMPDIR:-.}/${fifo}; echo imprettydarnsuredatdisisdaendofdacmd>${TMPDIR:-.}/${fifo}"
|
|
tmux new-session -d -s "sendprocess_${fifo}" "bash $SCRIPT outproc ${CHAT[ID]} ${fifo}"
|
|
}
|
|
|
|
|
|
checkback() {
|
|
checkproc "back-$1-"
|
|
}
|
|
|
|
checkproc() {
|
|
tmux ls | grep -q "$1${copname}"; res=$?; return $?
|
|
}
|
|
|
|
killback() {
|
|
killproc "back-$1-"
|
|
rm -f "${TMPDIR:-.}/${copname}$1-back.cmd"
|
|
}
|
|
|
|
killproc() {
|
|
local fifo="$1${copname}"
|
|
(tmux kill-session -t "${fifo}"; echo imprettydarnsuredatdisisdaendofdacmd>"${TMPDIR:-.}/${fifo}"; tmux kill-session -t "sendprocess_${fifo}"; rm -f -r "${TMPDIR:-.}/${fifo}")2>/dev/null
|
|
}
|
|
|
|
inproc() {
|
|
tmux send-keys -t "$copname" "${MESSAGE[0]} ${URLS[*]}
|
|
"
|
|
}
|