diff --git a/bashbot.sh b/bashbot.sh index b7e5df8..a14ac3a 100755 --- a/bashbot.sh +++ b/bashbot.sh @@ -16,7 +16,7 @@ # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # # Usage: bashbot.sh [-h|--help|BOTCOMMANDS] -BOTCOMMANDS="--help help init start stop status suspendback resumeback killback" +BOTCOMMANDS="-h help init start stop status suspendback resumeback killback" # # Exit Codes: # 0 - success (hopefully) @@ -30,7 +30,7 @@ BOTCOMMANDS="--help help init start stop status suspendback resumeback killbac # 8 - curl/wget missing # 10 - not bash! # -#### $$VERSION$$ v1.25-dev-40-g4a9d1f0 +#### $$VERSION$$ v1.25-dev-41-g37e4539 ################################################################## # emmbeded system may claim bash but it is not @@ -169,7 +169,7 @@ RUNUSER="${USER}" # USER is overwritten by bashbot array :-(, save original case "$1" in "") [ -z "${SOURCE}" ] && printf "${ORANGE}Available commands: ${GREY}${BOTCOMMANDS}${NN}" && exit ;; - "--h"*) LOGO="${BASHBOT_HOME:-.}/bin/bashbot.ascii" + "-h"*) LOGO="${BASHBOT_HOME:-.}/bin/bashbot.ascii" [ -r "${LOGO}" ] && cat "${LOGO}" sed -nE -e '/(NOT EDIT)|(shellcheck)/d' -e '3,/###/p' <"$0" exit;; diff --git a/bin/bashbot_env.inc.sh b/bin/bashbot_env.inc.sh index eb9000c..9c68c91 100644 --- a/bin/bashbot_env.inc.sh +++ b/bin/bashbot_env.inc.sh @@ -13,7 +13,7 @@ # AUTHOR: KayM (gnadelwartz), kay@rrr.de # CREATED: 18.12.2020 12:27 # -#### $$VERSION$$ v1.25-dev-34-gda214ab +#### $$VERSION$$ v1.25-dev-41-g37e4539 #=============================================================================== ############ diff --git a/commands.sh b/commands.sh index 585b7b2..d817662 100644 --- a/commands.sh +++ b/commands.sh @@ -15,7 +15,7 @@ # This file is public domain in the USA and all free countries. # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # -#### $$VERSION$$ v1.25-dev-14-g2fe6d4b +#### $$VERSION$$ v1.25-dev-41-g37e4539 # # bashbot locale defaults to c.UTF-8, adjust locale in mycommands.sh if needed diff --git a/mycommands.conf b/mycommands.conf new file mode 100644 index 0000000..c3c992b --- /dev/null +++ b/mycommands.conf @@ -0,0 +1,97 @@ +#!/bin/bash +####################################################### +# +# File: mycommands.conf +# +# Description: place your config and messages here +# +# Usage: will be sourced from mycommands.sh +# +# License: WTFPLv2 http://www.wtfpl.net/txt/copying/ +# Author: KayM (gnadelwartz), kay@rrr.de +# Created: 09.01.2021 07:27 +# +#### $$VERSION$$ v1.25-dev-41-g37e4539 +####################################################### + +########## +# adjust your language setting here, default is C.UTF-8 +# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment +export 'LC_ALL=C.UTF-8' +export 'LANG=C.UTF-8' +export 'LANGUAGE=C.UTF-8' + +########## +# in UTF-8 äöü etc. are part of [:alnum:] and ranges (e.g. a-z) +# for more information see doc/4_expert.md#Character_classes +# uncomment next line if you want classic ASCII ranges for [a-z] etc. +#export LC_COLLATE=C + + +########## +# edit the following lines to fit your bot usage +# use ${ME} for current bot name in messages +# Note: you must escape '_' in botname with two \ in markdown messages! +export bashbot_info='This is @'"${ME//_/\\\\_}"', the Telegram example bot written entirely in bash. +Edit commands and messages in mycommands.sh! +' +# export bashbot_help='*Available commands*: +#' +export res="" + +# Set INLINE to 1 in order to receive inline queries. +# To enable this option in your bot, send the /setinline command to @BotFather. +export INLINE="0" + +# if your bot is group admin it get commands sent to other bots +# Set MEONLY to 1 to ignore commands sent to other bots +export MEONLY="0" + +# Set to .* to allow sending files from all locations +# NOTE: this is a regex, not shell globbing! you must use a valid egex, +# '.' matches any character and '.*' matches all remaining charatcers! +# additionally you must escape special characters with '\', e.g. '\. \? \[ \*" to match them literally +export FILE_REGEX="${BASHBOT_ETC}/.*" + +# set BASHBOT_RETRY to enable retry in case of recoverable errors, e.g. throtteling +# problems with send_xxx message etc are looged to logs/ERROR.log +unset BASHBOT_RETRY +#export BASHBOT_RETRY="yes" + +# set value for adaptive sleeping while waiting for uodates in millisconds +# max slepp between polling updates 10s (default 5s) +export BASHBOT_SLEEP="10000" +# add 0.2s if no update available, up to BASHBOT_SLEEP (default 0.1s) +export BASHBOT_SLEEP_STEP="200" + +# if you want to use timer functions, set BASHBOT_START_TIMER to a not empty value +# default is to not start timer +unset BASHBOT_START_TIMER +#export BASHBOT_START_TIMER="yes" + +# set to "yes" and give your bot admin privilegs to remove service messages from groups +export SILENCER="no" + +# uncomment to remove keyboards sent from your bot +# export REMOVEKEYBOARD="yes" +# export REMOVEKEYBOARD_PRIVATE="yes" + +# uncomment to say welcome to new chat members +# export WELCOME_NEWMEMBER="yes" +WELCOME_MSG="Welcome" + +# uncomment to be informed about new/left chat members +# export REPORT_NEWMEMBER="yes" +# export REPORT_LEFTMEMBER="yes" + +# messages for admin only commands +NOTADMIN="Sorry, this command is allowed for admin or owner only" +NOTBOTADMIN="Sorry, this command is allowed for bot owner only" + +######## +# special network setup may require additional ARGS to curl +# +# example: run bashbot over TOR or SOCKS proxy +# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1:9050" # TOR +# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1" # regular SOCKS + diff --git a/mycommands.sh b/mycommands.sh index 28bc1d3..a3ac750 100644 --- a/mycommands.sh +++ b/mycommands.sh @@ -1,98 +1,30 @@ #!/bin/bash -######### +####################################################### # -# files: mycommands.sh.dist +# File: mycommands.sh.dist # # this is an out of the box test and example file to show what's possible in mycommands.sh # # #### if you start to develop your own bot, use the clean version of this file: # #### mycommands.clean # +# Usage: will be executed when a bot command is received +# +# License: WTFPLv2 http://www.wtfpl.net/txt/copying/ +# Author: KayM (gnadelwartz), kay@rrr.de +# +#### $$VERSION$$ v1.25-dev-41-g37e4539 +####################################################### # shellcheck disable=SC1117 -#### $$VERSION$$ v1.25-dev-14-g2fe6d4b -# -########## -# adjust your language setting here, default is C.UTF-8 -# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment -export 'LC_ALL=C.UTF-8' -export 'LANG=C.UTF-8' -export 'LANGUAGE=C.UTF-8' - -########## -# in UTF-8 äöü etc. are part of [:alnum:] and ranges (e.g. a-z) -# for more information see doc/4_expert.md#Character_classes -# uncomment next line if you want classic ASCII ranges for [a-z] etc. -#export LC_COLLATE=C +#################### +# Config has moved to bashbot.conf +# shellcheck source=./commands.sh +[ -r "${BASHBOT_ETC:-.}/mycommands.conf" ] && source "${BASHBOT_ETC:-.}/mycommands.conf" "$1" -########## -# edit the following lines to fit your bot usage -# use ${ME} for current bot name in messages -# Note: you must escape '_' in botname with two \ in markdown messages! -export bashbot_info='This is @'"${ME//_/\\\\_}"', the Telegram example bot written entirely in bash. -Edit commands and messages in mycommands.sh! -' -# export bashbot_help='*Available commands*: -#' -export res="" - -# Set INLINE to 1 in order to receive inline queries. -# To enable this option in your bot, send the /setinline command to @BotFather. -export INLINE="0" - -# if your bot is group admin it get commands sent to other bots -# Set MEONLY to 1 to ignore commands sent to other bots -export MEONLY="0" - -# Set to .* to allow sending files from all locations -# NOTE: this is a regex, not shell globbing! you must use a valid egex, -# '.' matches any character and '.*' matches all remaining charatcers! -# additionally you must escape special characters with '\', e.g. '\. \? \[ \*" to match them literally -export FILE_REGEX="${BASHBOT_ETC}/.*" - -# set BASHBOT_RETRY to enable retry in case of recoverable errors, e.g. throtteling -# problems with send_xxx message etc are looged to logs/ERROR.log -unset BASHBOT_RETRY -#export BASHBOT_RETRY="yes" - -# set value for adaptive sleeping while waiting for uodates in millisconds -# max slepp between polling updates 10s (default 5s) -export BASHBOT_SLEEP="10000" -# add 0.2s if no update available, up to BASHBOT_SLEEP (default 0.1s) -export BASHBOT_SLEEP_STEP="200" - -# if you want to use timer functions, set BASHBOT_START_TIMER to a not empty value -# default is to not start timer -unset BASHBOT_START_TIMER -#export BASHBOT_START_TIMER="yes" - -# set to "yes" and give your bot admin privilegs to remove service messages from groups -export SILENCER="no" - -# uncomment to remove keyboards sent from your bot -# export REMOVEKEYBOARD="yes" -# export REMOVEKEYBOARD_PRIVATE="yes" - -# uncomment to say welcome to new chat members -# export WELCOME_NEWMEMBER="yes" -WELCOME_MSG="Welcome" - -# uncomment to be informed about new/left chat members -# export REPORT_NEWMEMBER="yes" -# export REPORT_LEFTMEMBER="yes" - -# messages for admin only commands -NOTADMIN="Sorry, this command is allowed for admin or owner only" -NOTBOTADMIN="Sorry, this command is allowed for bot owner only" - -######## -# special network setup may require additional ARGS to curl -# -# example: run bashbot over TOR or SOCKS proxy -# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1:9050" # TOR -# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1" # regular SOCKS - +################## +# let's go ... if [ "$1" = "startbot" ];then ################### # this section is processed on startup diff --git a/mycommands.sh.clean b/mycommands.sh.clean index d744161..0be2849 100644 --- a/mycommands.sh.clean +++ b/mycommands.sh.clean @@ -1,80 +1,31 @@ #!/bin/bash -######## +####################################################### +# +# File: mycommands.sh.clean # -# files: mycommands.sh.clean # copy to mycommands.sh and add all your commands and functions here ... # -#### $$VERSION$$ v1.25-dev-9-g14fa2c7 +# Usage: will be executed when a bot command is received # - -########## -# adjust your language setting here, default is C.UTF-8 -# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment -export 'LC_ALL=C.UTF-8' -export 'LANG=C.UTF-8' -export 'LANGUAGE=C.UTF-8' - -########## -# in UTF-8 äöü etc. are part of [:alnum:] and ranges (e.g. a-z) -# for more information see doc/4_expert.md#Character_classes -# uncomment next line if you want classic ASCII ranges for [a-z] etc. -#export LC_COLLATE=C - - -########## -# edit the following lines to fit your bot usage - -export bashbot_info='This is bashbot, the Telegram bot written entirely in bash. -' - -export bashbot_help='*Available commands*: -' -export res="" - -# Set INLINE to 1 in order to receive inline queries. -# To enable this option in your bot must also send the /setinline command to @BotFather. -export INLINE="0" - -# if your bot is group admin it get commands sent to other bots -# Set MEONLY to 1 to ignore commands sent to other bots -export MEONLY="0" - -# NOTE: this is a regex, not shell globbing! you must use a valid egex, -# '.' matches any character and '.*' matches all remaining charatcers! -# additionally you must escape special characters with '\', e.g. '\. \? \[ \*" to match them literally -# do NOT set to .* as this allow sending files from all locations! -export FILE_REGEX="${BASHBOT_ETC}/.*" - -# set BASHBOT_RETRY to enable retry in case of recoverable errors, e.g. throtteling -# problems with send_,´message etc are looged to logs/ERROR.log -unset BASHBOT_RETRY -#export BASHBOT_RETRY="yes" - -# set value for adaptive sleeping while waitingnfor uodates in millisconds -# max slepp between polling updates 10s (default 5s) -export BASHBOT_SLEEP="10000" -# add 0.2s if no update available, up to BASHBOT_SLEEP (default 0.1s) -export BASHBOT_SLEEP_STEP="200" - -# if you want to use timer functions, set BASHBOT_START_TIMER to a not empty value -# default is to nit start timer -unset BASHBOT_START_TIMER -#export BASHBOT_START_TIMER="yes" -# set to "yes" and give your bot admin privilegs to remove service messaes from groups -export SILENCER="no" - -# uncomment to remove keyboards sent by your bot -# export REMOVEKEYBOARD="yes" -# export REMOVEKEYBOARD_PRIVATE="yes" - -######## -# special network setup may require additional ARGS to curl +# License: WTFPLv2 http://www.wtfpl.net/txt/copying/ +# Author: KayM (gnadelwartz), kay@rrr.de # -# example: run bashbot over TOR or SOCKS proxy -# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1:9050" # TOR -# export BASHBOT_CURL_ARGS="--socks5-hostname 127.0.0.1" # regular SOCKS +#### $$VERSION$$ v1.25-dev-41-g37e4539 +####################################################### +# shellcheck disable=SC1117 +#################### +# Config has moved to bashbot.conf +# shellcheck source=./commands.sh +[ -r "${BASHBOT_ETC:-.}/mycommands.conf" ] && source "${BASHBOT_ETC:-.}/mycommands.conf" "$1" + + +################## +# lets's go if [ "$1" = "startbot" ];then + ################### + # this section is processed on startup + # run once after startup when the first message is received my_startup(){ :