#!/bin/bash ######## # # files: mycommands.sh.clean # copy to mycommands.sh and add all your commands and functions here ... # #### $$VERSION$$ v1.2-dev2-18-g84b893c # ########## # 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" # 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 # # 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 if [ "$1" = "startbot" ];then # run once after startup when the first message is received my_startup(){ : } touch .mystartup else # call my_startup on first message after startup # things to do only once [ -f .mystartup ] && rm -f .mystartup && _exec_if_function my_startup ############################# # your own bashbot commands # NOTE: command can have @botname attached, you must add * to case tests... mycommands() { ############## # a service Message was received # add your own stuff here if [ -n "${SERVICE}" ]; then # example: delete every service message if [ "${SILENCER}" = "yes" ]; then delete_message "${CHAT[ID]}" "${MESSAGE[ID]}" fi fi # remove keyboard if you use keyboards [ -n "${REMOVEKEYBOARD}" ] && remove_keyboard "${CHAT[ID]}" & [[ -n "${REMOVEKEYBOARD_PRIVATE}" && "${CHAT[ID]}" == "${USER[ID]}" ]] && remove_keyboard "${CHAT[ID]}" & case "${MESSAGE}" in ################## # example command, replace them by your own '/echo'*) # example echo command send_normal_message "${CHAT[ID]}" "$MESSAGE" ;; ########## # command overwrite examples # return 0 -> run default command afterwards # return 1 -> skip possible default commands '/info'*) # output date in front of regular info send_normal_message "${CHAT[ID]}" "$(date)" return 0 ;; '/kickme'*) # this will replace the /kickme command send_markdownv2_mesage "${CHAT[ID]}" "This bot will *not* kick you!" return 1 ;; esac } myinlines() { ####################### # this fuinction is called only if you has set INLINE=1 !! # shellcheck disable=SC2128 iQUERY="${iQUERY,,}" case "${iQUERY}" in ################## # example inline command, replace it by your own "image "*) # search images with yahoo local search="${iQUERY#* }" answer_inline_multi "${iQUERY[ID]}" "$(my_image_search "${search}")" ;; esac } ##################### # place your processing functions here # example inline processing function, not really useful # $1 search parameter my_image_search(){ local image result sep="" count="1" result="$(wget --user-agent 'Mozilla/5.0' -qO - "https://images.search.yahoo.com/search/images?p=$1" | sed 's/