mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2025-01-16 02:42:19 +00:00
start, kill, resume, suspend now working
This commit is contained in:
parent
83623ece2e
commit
beb77a4b65
@ -18,7 +18,7 @@
|
||||
<p>Contributions by JuanPotato, BigNerd95, TiagoDanin, and iicc1.</p>
|
||||
<p>Released to the public domain wherever applicable. Elsewhere, consider it released under the <a href="http://www.wtfpl.net/txt/copying/">WTFPLv2</a>.</p>
|
||||
<h2 id="prerequisites">Prerequisites</h2>
|
||||
<p>Depends on <a href="http://github.com/tmux/tmux">tmux</a>. Uses <a href="http://github.com/dominictarr/JSON.sh">JSON.sh</a>.</p>
|
||||
<p>Uses <a href="http://github.com/dominictarr/JSON.sh">JSON.sh</a>, but no more TMUX.</p>
|
||||
<p>Even bashbot is written in bash, it depends on commands typically availible in a Unix/Linux Environment. More concret on the common commands provided by <a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands">coreutils</a>, <a href="https://en.wikipedia.org/wiki/BusyBox#Commands">busybox</a> or <a href="https://landley.net/toybox/help.html">toybox</a>, see <a href="doc/7_develop.md#common-commands">Developer Notes</a></p>
|
||||
<p>Bashbot <a href="https://github.com/topkecleon/telegram-bot-bash">Documentation</a> and <a href="https://github.com/topkecleon/telegram-bot-bash/releases">Downloads</a> are availible on www.github.com</p>
|
||||
<h2 id="documentation">Documentation</h2>
|
||||
@ -107,6 +107,6 @@
|
||||
<p><span class="citation">@Gnadelwartz</span></p>
|
||||
<h2 id="thats-it">That’s it!</h2>
|
||||
<p>If you feel that there’s something missing or if you found a bug, feel free to submit a pull request!</p>
|
||||
<h4 id="version-v0.80-dev3-0-g31a5d00"><br /><span class="math display"><em>V</em><em>E</em><em>R</em><em>S</em><em>I</em><em>O</em><em>N</em></span><br /> v0.80-dev3-0-g31a5d00</h4>
|
||||
<h4 id="version-v0.80-dev3-5-g83623ec"><br /><span class="math display"><em>V</em><em>E</em><em>R</em><em>S</em><em>I</em><em>O</em><em>N</em></span><br /> v0.80-dev3-5-g83623ec</h4>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -9,8 +9,7 @@ Released to the public domain wherever applicable.
|
||||
Elsewhere, consider it released under the [WTFPLv2](http://www.wtfpl.net/txt/copying/).
|
||||
|
||||
## Prerequisites
|
||||
Depends on [tmux](http://github.com/tmux/tmux).
|
||||
Uses [JSON.sh](http://github.com/dominictarr/JSON.sh).
|
||||
Uses [JSON.sh](http://github.com/dominictarr/JSON.sh), but no more TMUX.
|
||||
|
||||
Even bashbot is written in bash, it depends on commands typically availible in a Unix/Linux Environment.
|
||||
More concret on the common commands provided by [coreutils](https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands), [busybox](https://en.wikipedia.org/wiki/BusyBox#Commands) or [toybox](https://landley.net/toybox/help.html), see [Developer Notes](doc/7_develop.md#common-commands)
|
||||
@ -107,4 +106,4 @@ Well, thats a damn good question ... may be because I'm an Unix/Linux admin from
|
||||
|
||||
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
||||
|
||||
#### $$VERSION$$ v0.80-dev3-0-g31a5d00
|
||||
#### $$VERSION$$ v0.80-dev3-5-g83623ec
|
||||
|
@ -13,8 +13,7 @@ Elsewhere, consider it released under the
|
||||
[WTFPLv2](http://www.wtfpl.net/txt/copying/).
|
||||
|
||||
## Prerequisites
|
||||
Depends on [tmux](http://github.com/tmux/tmux).
|
||||
Uses [JSON.sh](http://github.com/dominictarr/JSON.sh).
|
||||
Uses [JSON.sh](http://github.com/dominictarr/JSON.sh), but no more TMUX.
|
||||
|
||||
Even bashbot is written in bash, it depends on commands typically availible in
|
||||
a Unix/Linux Environment.
|
||||
@ -155,4 +154,4 @@ health status
|
||||
If you feel that there's something missing or if you found a bug, feel free to
|
||||
submit a pull request!
|
||||
|
||||
#### $$VERSION$$ v0.80-dev3-0-g31a5d00
|
||||
#### $$VERSION$$ v0.80-dev3-5-g83623ec
|
||||
|
84
bashbot.sh
84
bashbot.sh
@ -12,7 +12,7 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v0.80-dev3-4-ge7d2eff
|
||||
#### $$VERSION$$ v0.80-dev3-5-g83623ec
|
||||
#
|
||||
# Exit Codes:
|
||||
# - 0 sucess (hopefully)
|
||||
@ -392,7 +392,7 @@ bot_init() {
|
||||
[ -d "${OLDTMP}" ] && { mv -n "${OLDTMP}/"* "${TMPDIR}"; rmdir "${OLDTMP}"; }
|
||||
[ -f "modules/inline.sh" ] && rm -f "modules/inline.sh"
|
||||
#setup bashbot
|
||||
[[ "$(id -u)" -eq "0" ]] && RUNUSER="nobody"
|
||||
[[ "${UID}" -eq "0" ]] && RUNUSER="nobody"
|
||||
echo -n "Enter User to run basbot [$RUNUSER]: "
|
||||
read -r TOUSER
|
||||
[ "$TOUSER" = "" ] && TOUSER="$RUNUSER"
|
||||
@ -460,15 +460,14 @@ if [ "$1" != "source" ]; then
|
||||
bot_init
|
||||
exit
|
||||
;;
|
||||
"attach")
|
||||
tmux attach -t "$ME"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
###############
|
||||
# "official" arguments as shown to users
|
||||
SESSION="$ME-startbot"
|
||||
BOTPID="$(proclist "${SESSION}")"
|
||||
|
||||
case "$1" in
|
||||
"count")
|
||||
echo "A total of $(wc -l <"${COUNTFILE}") users used me."
|
||||
@ -481,46 +480,75 @@ if [ "$1" != "source" ]; then
|
||||
shift
|
||||
while read -r f; do send_markdown_message "${f//COUNT}" "$*"; $sleep; done <"${COUNTFILE}"
|
||||
;;
|
||||
"status")
|
||||
if [ "${BOTPID}" != "" ]; then
|
||||
echo -e "${GREEN}Bot is running.${NC}"
|
||||
exit
|
||||
else
|
||||
echo -e "${ORANGE}Bot not running.${NC}"
|
||||
exit 5
|
||||
fi
|
||||
;;
|
||||
|
||||
"start")
|
||||
tmux kill-session -t "$ME" &>/dev/null
|
||||
tmux new-session -d -s "$ME" "bash $SCRIPT startbot" && echo -e "${GREEN}Bot started successfully.${NC}"
|
||||
echo "Tmux session name $ME" || echo -e "${RED}An error occurred while starting the bot. ${NC}"
|
||||
# shellcheck disable=SC2086
|
||||
[ "${BOTPID}" != "" ] && kill ${BOTPID}
|
||||
nohup "$SCRIPT" "startbot" "$2" "${SESSION}" &>/dev/null &
|
||||
echo "Session Name: ${SESSION}"
|
||||
if [ "$(proclist "${SESSION}")" != "" ]; then
|
||||
echo -e "${GREEN}Bot started successfully.${NC}"
|
||||
else
|
||||
echo -e "${RED}An error occurred while starting the bot.${NC}"
|
||||
exit 5
|
||||
fi
|
||||
;;
|
||||
"kill")
|
||||
tmux kill-session -t "$ME" &>/dev/null
|
||||
echo -e "${GREEN}OK. Bot stopped successfully.${NC}"
|
||||
"kill"|"stop")
|
||||
if [ "${BOTPID}" != "" ]; then
|
||||
# shellcheck disable=SC2086
|
||||
if kill ${BOTPID}; then
|
||||
echo -e "${GREEN}OK. Bot stopped successfully.${NC}"
|
||||
else
|
||||
echo -e "${RED}An error occured while stopping bot.${NC}"
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
exit
|
||||
;;
|
||||
"background" | "resumeback")
|
||||
"backgr"* | "resumeb"*)
|
||||
echo -e "${GREEN}Restart background processes ...${NC}"
|
||||
for FILE in "${TMPDIR:-.}/"*-back.cmd; do
|
||||
if [ "${FILE}" = "${TMPDIR:-.}/*-back.cmd" ]; then
|
||||
echo -e "${RED}No background processes to start.${NC}"; break
|
||||
else
|
||||
RESTART="$(< "${FILE}")"
|
||||
CHAT[ID]="${RESTART%%:*}"
|
||||
JOB="${RESTART#*:}"
|
||||
CONTENT="$(< "${FILE}")"
|
||||
CHAT[ID]="${CONTENT%%:*}"
|
||||
JOB="${CONTENT#*:}"
|
||||
PROG="${JOB#*:}"
|
||||
JOB="${JOB%:*}"
|
||||
fifo="$(fifoname "${CHAT[ID]}" "back-${JOB}")"
|
||||
echo "restartbackground ${PROG} ${fifo}"
|
||||
fifo="$(procname "${CHAT[ID]}" "back-${JOB}-")"
|
||||
echo "restart background job ${PROG} ${fifo}"
|
||||
start_back "${CHAT[ID]}" "${PROG}" "${JOB}"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
"killback" | "suspendback")
|
||||
"killb"* | "suspendb"*)
|
||||
echo -e "${GREEN}Stopping background processes ...${NC}"
|
||||
for FILE in "${TMPDIR:-.}/"*-back.cmd; do
|
||||
if [ "${FILE}" = "${TMPDIR:-.}/*-back.cmd" ]; then
|
||||
echo -e "${RED}No background processes.${NC}"; break
|
||||
else
|
||||
REMOVE="$(< "${FILE}")"
|
||||
CHAT[ID]="${RESTART%%:*}"
|
||||
JOB="${REMOVE#*:}"
|
||||
CONTENT="$(< "${FILE}")"
|
||||
CHAT[ID]="${CONTENT%%:*}"
|
||||
JOB="${CONTENT#*:}"
|
||||
JOB="${JOB%:*}"
|
||||
fifo="$(fifoname "${CHAT[ID]}" "back-${JOB}")"
|
||||
echo "killbackground ${fifo}"
|
||||
[ "$1" = "killback" ] && rm -f "${FILE}" # remove job
|
||||
kill_proc "${CHAT[ID]}" "back-${JOB}"
|
||||
fifo="$(procname "${CHAT[ID]}" "back-${JOB}-")"
|
||||
if [[ "$1" = "killb"* ]]; then
|
||||
rm -f "${FILE}" # remove job
|
||||
echo "kill background job ${fifo}"
|
||||
else
|
||||
echo "suspend background job ${fifo}"
|
||||
fi
|
||||
kill_proc "${CHAT[ID]}" "back-${JOB}-"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
@ -530,13 +558,13 @@ if [ "$1" != "source" ]; then
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}${ME}: BAD REQUEST${NC}"
|
||||
echo -e "${RED}Available arguments: start, kill, count, broadcast, help, suspendback, resumeback, killback${NC}"
|
||||
echo -e "${RED}Available arguments: start, stop, kill, status, count, broadcast, help, suspendback, resumeback, killback${NC}"
|
||||
exit 4
|
||||
;;
|
||||
esac
|
||||
|
||||
# warn if root
|
||||
if [[ "$(id -u)" -eq "0" ]] ; then
|
||||
if [[ "${UID}" -eq "0" ]] ; then
|
||||
echo -e "\\n${ORANGE}WARNING: ${SCRIPT} was started as ROOT (UID 0)!${NC}"
|
||||
echo -e "${ORANGE}You are at HIGH RISK when processing user input with root privilegs!${NC}"
|
||||
fi
|
||||
|
@ -5,7 +5,7 @@ This section is about help and best practices for new bashbot developers. The ma
|
||||
bashbot development is done on github. If you want to provide fixes or new features [fork bashbot on githup](https://help.github.com/en/articles/fork-a-repo) and provide changes as [pull request on github](https://help.github.com/en/articles/creating-a-pull-request).
|
||||
|
||||
### Debugging Bashbot
|
||||
In normal mode of operation all bashbot output is discarded one more correct sent to TMUX console.
|
||||
In normal mode of operation all bashbot output is discarded.
|
||||
To get these messages (and more) you can start bashbot in the current shell ```./bashbot.sh startbot```. Now you can see all output or erros from bashbot.
|
||||
In addition you can change the change the level of verbosity by adding a third argument after startbot.
|
||||
```
|
||||
@ -188,5 +188,5 @@ fi
|
||||
#### [Prev Function Reference](6_reference.md)
|
||||
#### [Next Bashbot Environment](8_custom.md)
|
||||
|
||||
#### $$VERSION$$ v0.80-dev3-0-g31a5d00
|
||||
#### $$VERSION$$ v0.80-dev3-5-g83623ec
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user