telegram-bot-bash/commands.sh

125 lines
4.1 KiB
Bash
Raw Normal View History

#!/bin/bash
# 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.
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
#
#### $$VERSION$$ v0.80-dev2-7-g92f022d
2019-04-01 16:24:05 +00:00
#
# 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
2019-03-30 14:11:33 +00:00
export 'LC_ALL=C.UTF-8'
export 'LANG=C.UTF-8'
export 'LANGUAGE=C.UTF-8'
unset IFS
# set -f # if you are paranoid use set -f to disable globbing
2019-05-02 13:14:18 +00:00
# to change the default info message overwrite bashbot_info in mycommands.sh
bashbot_info='This is bashbot, the Telegram bot written entirely in bash.
2019-04-11 11:53:01 +00:00
It features background tasks and interactive chats, and can serve as an interface for CLI programs.
It currently can send, recieve and forward messages, custom keyboards, photos, audio, voice, documents, locations and video files.
'
2019-05-02 13:14:18 +00:00
# to change the default help messages overwrite in mycommands.sh
bashbot_help='*Available commands*:
2019-04-11 11:53:01 +00:00
*• /start*: _Start bot and get this message_.
2019-04-27 11:36:32 +00:00
*• /help*: _Get this message_.
2019-04-11 11:53:01 +00:00
*• /info*: _Get shorter info message about this bot_.
*• /question*: _Start interactive chat_.
*• /cancel*: _Cancel any currently running interactive chats_.
*• /kickme*: _You will be autokicked from the chat_.
*• /leavechat*: _The bot will leave the group with this command _.
Written by Drew (@topkecleon), Daniil Gentili (@danogentili) and KayM(@gnadelwartz).
Get the code in my [GitHub](http://github.com/topkecleon/telegram-bot-bash)
'
# load modues on startup and always on on debug
if [ "${1}" = "source" ] || [[ "${1}" = *"debug"* ]] ; then
# load all readable modules
for modules in ${MODULEDIR:-.}/*.sh ; do
# shellcheck source=./modules/aliases.sh
[ -r "${modules}" ] && source "${modules}" "${1}"
done
fi
# defaults to no inline and nonsense home dir
export INLINE="0"
export FILE_REGEX='/home/user/allowed/.*'
2019-05-02 13:14:18 +00:00
# load mycommands
# shellcheck source=./commands.sh
[ -r "${BASHBOT_ETC:-.}/mycommands.sh" ] && source "${BASHBOT_ETC:-.}/mycommands.sh" "${1}"
2019-04-12 12:04:57 +00:00
2019-05-02 13:14:18 +00:00
if [ "${1}" != "source" ];then
# this was here from beginning, can some tell me what this is for?
# I GUESS it was used to auto send files and locations??
# this will be removed!!!
2019-05-10 16:57:22 +00:00
if ! tmux ls 2>/dev/null | grep -v send | grep -q "$copname"; then
2019-03-30 14:11:33 +00:00
[ ! -z "${URLS[*]}" ] && {
2019-04-01 16:24:05 +00:00
curl -s "${URLS[*]}" -o "$NAME"
send_file "${CHAT[ID]}" "$NAME" "$CAPTION"
2019-03-28 19:59:52 +00:00
rm -f "$NAME"
}
2019-04-01 16:24:05 +00:00
[ ! -z "${LOCATION[*]}" ] && send_location "${CHAT[ID]}" "${LOCATION[LATITUDE]}" "${LOCATION[LONGITUDE]}"
2019-05-02 13:14:18 +00:00
fi
# detect inline commands....
# no default commands, all processing is done in myinlines()
2019-05-02 13:14:18 +00:00
if [ "$INLINE" != "0" ] && [ "${iQUERY[ID]}" != "" ]; then
if _is_function process_inline; then
2019-05-09 21:34:45 +00:00
# forward iinline query to optional dispatcher
_is_function myinlines && myinlines
fi
# regular (gobal) commands ...
# your commands are in mycommands()
2019-05-02 13:14:18 +00:00
else
2019-05-02 20:13:06 +00:00
case "${MESSAGE}" in
################################################
2019-04-27 11:36:32 +00:00
# GLOBAL commands start here, edit messages only
'/info'*)
_markdown_message "${bashbot_info}"
;;
2019-04-27 11:36:32 +00:00
'/start'*)
send_action "${CHAT[ID]}" "typing"
_is_botadmin && _markdown_message "You are *BOTADMIN*."
2019-05-02 09:10:55 +00:00
if _is_botadmin || _is_allowed "start" ; then
_markdown_message "${bashbot_help}"
2019-04-12 11:14:33 +00:00
else
_message "You are not allowed to start Bot."
2019-04-12 12:04:57 +00:00
fi
;;
2019-04-27 11:36:32 +00:00
'/help'*)
2019-05-02 09:10:55 +00:00
_markdown_message "${bashbot_help}"
2019-04-27 11:36:32 +00:00
;;
'/leavechat'*) # bot leave chat if user is admin in chat
2019-04-15 12:17:18 +00:00
if _is_admin ; then
_markdown_message "*LEAVING CHAT...*"
_leave
fi
;;
2019-04-27 11:36:32 +00:00
'/kickme'*)
_kick_user "${USER[ID]}"
_unban_user "${USER[ID]}"
;;
2019-04-27 11:36:32 +00:00
'/cancel'*)
2019-05-01 17:21:57 +00:00
checkproc
if [ "$res" -eq 0 ] ; then killproc && _message "Command canceled.";else _message "No command is currently running.";fi
;;
2019-05-02 13:14:18 +00:00
*) # forward messages to optional dispatcher
_is_function startproc && if tmux ls | grep -v send | grep -q "$copname"; then inproc; fi # interactive running
_is_function mycommands && mycommands
;;
esac
2019-05-02 13:14:18 +00:00
fi
fi