add modules/alaises.sh and mycommands.sh

This commit is contained in:
Kay Marquardt (Gnadelwartz) 2019-04-23 21:52:57 +02:00
parent 03f22c90c0
commit c6d40869c3
4 changed files with 96 additions and 47 deletions

54
commands.sh Executable file → Normal file
View File

@ -1,14 +1,14 @@
#!/bin/bash #!/bin/bash
# Edit your commands in this file. # file: commands.sh
# do not edit this file, instead place all your commands in mycommands.sh
# This file is public domain in the USA and all free countries. # This file is public domain in the USA and all free countries.
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
# #
#### $$VERSION$$ v0.70-dev2-10-gfa9e879 #### $$VERSION$$ v0.70-dev2-15-g03f22c9
# #
# shellcheck disable=SC2154 # shellcheck disable=SC2154
# shellcheck disable=SC2034 # shellcheck disable=SC2034
SC2034="$CONTACT" # mute CONTACT not used ;-)
# adjust your language setting here, e.g.when run from other user or cron. # adjust your language setting here, e.g.when run from other user or cron.
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment # https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
@ -20,8 +20,10 @@ unset IFS
# set -f # if you are paranoid use set -f to disable globbing # set -f # if you are paranoid use set -f to disable globbing
# to change the default info and help messages copy bashbot_info() and bahsbot_help()
# to mycommands.sh and edit the messages there.
if [ "$1" != "source" ]; then if [ "$1" != "source" ]; then
# change Info anf Help to fit your needs
bashbot_info() { bashbot_info() {
send_markdown_message "${1}" 'This is bashbot, the Telegram bot written entirely in bash. send_markdown_message "${1}" 'This is bashbot, the Telegram bot written entirely in bash.
It features background tasks and interactive chats, and can serve as an interface for CLI programs. It features background tasks and interactive chats, and can serve as an interface for CLI programs.
@ -42,16 +44,12 @@ Get the code in my [GitHub](http://github.com/topkecleon/telegram-bot-bash)
' '
} }
# some handy shortcuts, e.g.: # load additional modules
_is_botadmin() { [ -r "modules/aliases.sh" ] && source "modules/aliases.sh" # some handy aliases, e.g. _is_admin and _message
user_is_botadmin "${USER[ID]}" # ...
} # shellcheck source=./commands.sh
_is_admin() { [ -r "mycommands.sh" ] && source "mycommands.sh"
user_is_admin "${CHAT[ID]}" "${USER[ID]}"
}
_is_allowed() { # $1 = resource
user_is_allowed "${USER[ID]}" "$1" "${CHAT[ID]}"
}
fi fi
if [ "$1" = "source" ];then if [ "$1" = "source" ];then
@ -96,33 +94,6 @@ else
fi & fi &
fi fi
case "$MESSAGE" in case "$MESSAGE" in
'/question')
checkproc
if [ "$res" -gt 0 ] ; then
startproc "example/question"
else
send_normal_message "${CHAT[ID]}" "$MESSAGE already running ..."
fi
;;
'/run-notify')
myback="notify"; checkback "$myback"
if [ "$res" -gt 0 ] ; then
background "example/notify 60" "$myback" # notify every 60 seconds
else
send_normal_message "${CHAT[ID]}" "Background command $myback already running ..."
fi
;;
'/stop-notify')
myback="notify"; checkback "$myback"
if [ "$res" -eq 0 ] ; then
killback "$myback"
send_normal_message "${CHAT[ID]}" "Background command $myback canceled."
else
send_normal_message "${CHAT[ID]}" "No background command $myback is currently running.."
fi
;;
################################################ ################################################
# DEFAULT commands start here, edit messages only # DEFAULT commands start here, edit messages only
'/info') '/info')
@ -156,6 +127,7 @@ else
;; ;;
*) # forward input to interactive chat if running *) # forward input to interactive chat if running
if tmux ls | grep -v send | grep -q "$copname"; then inproc; fi if tmux ls | grep -v send | grep -q "$copname"; then inproc; fi
_is_function mycommands && mycommands
;; ;;
esac esac
fi fi

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# this has to run once atfer git clone # this has to run once atfer git clone
# and every time we create new hooks # and every time we create new hooks
#### $$VERSION$$ v0.70-dev2-10-gfa9e879 #### $$VERSION$$ v0.70-dev2-15-g03f22c9
# magic to ensure that we're always inside the root of our application, # magic to ensure that we're always inside the root of our application,
# no matter from which directory we'll run script # no matter from which directory we'll run script
@ -12,7 +12,7 @@ VERSION="$(git describe --tags | sed -e 's/-.*//' -e 's/v//')"
DISTNAME="telegram-bot-bash" DISTNAME="telegram-bot-bash"
DISTDIR="./dist/${DISTNAME}" DISTDIR="./dist/${DISTNAME}"
DISTFILES="bashbot.rc bashbot.sh commands.sh doc examples LICENSE README.md README.txt" DISTFILES="bashbot.rc bashbot.sh commands.sh mycommands.sh doc examples modules LICENSE README.md README.txt"
# run tests first! # run tests first!
@ -32,6 +32,7 @@ cd "${DISTDIR}" || exit 1
# additional stuff # additional stuff
mv "commands.sh" "commands.sh.dist" mv "commands.sh" "commands.sh.dist"
mv "mycommands.sh" "mycommands.sh.dist"
JSONSHFILE="JSON.sh/JSON.sh" JSONSHFILE="JSON.sh/JSON.sh"
if [ ! -f "${JSONSHFILE}" ]; then if [ ! -f "${JSONSHFILE}" ]; then
@ -49,8 +50,4 @@ tar -czf "${DISTNAME}-${VERSION}.tar.gz" "${DISTNAME}"
# shellcheck disable=SC2086 # shellcheck disable=SC2086
ls -ld ${DISTNAME}-${VERSION}.* ls -ld ${DISTNAME}-${VERSION}.*
# remove temporary dist dir
cd "$GIT_DIR/.." || exit 1
rm -rf ${DISTDIR}

33
modules/aliases.sh Normal file
View File

@ -0,0 +1,33 @@
#!/bin/bash
# file: modules/alaises.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-dev2-15-g03f22c9
# source from commands.sh to use the aliases
# some handy aliases for use when processing messages:
_is_botadmin() {
user_is_botadmin "${USER[ID]}"
}
_is_admin() {
user_is_admin "${CHAT[ID]}" "${USER[ID]}"
}
_is_allowed() {
user_is_allowed "${USER[ID]}" "$1" "${CHAT[ID]}"
}
# same for easy sending messages of messages
_message() {
send_normal_message "${CHAT[ID]}" "$1"
}
_normal_message() {
send_normal_message "${CHAT[ID]}" "$1"
}
_html_message() {
send_html_message "${CHAT[ID]}" "$1"
}
_markdown_message() {
send_markdown_message "${CHAT[ID]}" "$1"
}

47
mycommands.sh Normal file
View File

@ -0,0 +1,47 @@
#!/bin/bash
# files: mycommands.sh.dist
# copy to mycommands.sh and add all your commands and functions here ...
#
#### $$VERSION$$ v0.70-dev2-15-g03f22c9
#
# shellcheck disable=SC2154
# shellcheck disable=SC2034
# your additional bahsbot commands
mycommands() {
case "$MESSAGE" in
'/echo'*) # example echo command
send_normal_message "${CHAT[ID]}" "$MESSAGE"
;;
'/question') # start interactive questions
checkproc
if [ "$res" -gt 0 ] ; then
startproc "example/question"
else
send_normal_message "${CHAT[ID]}" "$MESSAGE already running ..."
fi
;;
'/run-notify') # start notify background job
myback="notify"; checkback "$myback"
if [ "$res" -gt 0 ] ; then
background "example/notify 60" "$myback" # notify every 60 seconds
else
send_normal_message "${CHAT[ID]}" "Background command $myback already running ..."
fi
;;
'/stop-notify') # kill notify background job
myback="notify"; checkback "$myback"
if [ "$res" -eq 0 ] ; then
killback "$myback"
send_normal_message "${CHAT[ID]}" "Background command $myback canceled."
else
send_normal_message "${CHAT[ID]}" "No background command $myback is currently running.."
fi
;;
esac
}
# place your processing functions here