firmware/general/overlay/usr/sbin/telegram_bot

104 lines
4.3 KiB
Bash
Executable File

#!/bin/sh
#
PATH='/usr/bin:/usr/sbin:/bin:/sbin'
rupor=$1
token=$2
start=1
api="https://api.telegram.org/bot$token"
offset_file=/tmp/telegram_offset
if [ "$start" == "0" ]; then
echo "Launch of the Telegram_bot is not allowed." | logger -t "telegram_bot" -p daemon.info
exit 1
fi
sleep 10
keyboard='{"keyboard": [["/snap \uD83D\uDCF7","/guard \uD83D\uDC6E","/relay \uD83D\uDCA1"],["/system \uD83D\uDCCA","/reboot \uD83D\uDCA9","/menu \uD83D\uDD25"]],"resize_keyboard":true,"one_time_keyboard":false}'
curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d parse_mode=Markdown --data-urlencode text="OpenIPC device started." >/dev/null 2>&1
curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "reply_markup=${keyboard}" -d "text=Please insert command:" >/dev/null 2>&1
polling_timeout=30
offset=0
if [ -f "$offset_file" ]; then
offset=$( cat $offset_file )
else
echo $offset > $offset_file
fi
reply_to_msg () {
msg_id=$1
origin=$2
eval toReturn="$3"
curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=HTML --data-urlencode text="$toReturn" >/dev/null 2>&1
}
while [ true ]
do
updates=$(curl -s -X GET ${api}/getUpdates?offset=${offset}&timeout=${polling_timeout})
status=$(jsonfilter -s "$updates" -e $.ok)
if [ $status = 'true' ]; then
update_ids=$(jsonfilter -s "$updates" -e $.result[*].update_id)
for update_id in $update_ids
do
offset=$((update_id+1))
echo $offset > $offset_file
origin=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].message.chat.id")
msg_id=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].message.message_id")
command=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].message.text")
is_a_cmd=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].message.entities[*].type")
query_ans=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].callback_query.id")
origin_ans=$(jsonfilter -s "$updates" -e "$.result[@.update_id=$update_id].callback_query.message.chat.id")
if [[ "$origin" != "$rupor" && "$origin_ans" != "$rupor" ]];then
curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=Markdown --data-urlencode text="This is a Private bot." >/dev/null 2>&1
curl -s -X POST $api/leaveChat -d chat_id=$origin >/dev/null 2>&1
else
if [ "$is_a_cmd" == "bot_command" ]; then
cmd=$(echo $command | awk '{print $1}')
DATE=`date +%Y-%m-%d_%H:%M:%S`
case "$cmd" in
("/guard")
echo "[ $DATE ] Run /guard command !" | logger -t "telegram_bot" -p daemon.info
informex_guard=$("tg_guard.sh")
reply_to_msg $msg_id $origin "\${informex_guard}"
;;
("/menu")
echo "[ $DATE ] Run /menu command !" | logger -t "telegram_bot" -p daemon.info
curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "reply_markup=${keyboard}" -d "text=Please insert command:" >/dev/null 2>&1
;;
("/reboot")
echo "[ $DATE ] Run /reboot command !" | logger -t "telegram_bot" -p daemon.info
informex_reboot=$("tg_reboot.sh")
reply_to_msg $msg_id $origin "\${informex_reboot}"
;;
("/relay")
echo "[ $DATE ] Run /relay command !" | logger -t "telegram_bot" -p daemon.info
informex_relay=$("tg_relay.sh")
reply_to_msg $msg_id $origin "\${informex_relay}"
;;
("/snap")
echo "[ $DATE ] Run /snap command !" | logger -t "telegram_bot" -p daemon.info
informex_system=$("tg_snap.sh")
reply_to_msg $msg_id $origin "\${informex_system}"
;;
("/system")
echo "[ $DATE ] Run /system command !" | logger -t "telegram_bot" -p daemon.info
informex_system=$("tg_system.sh")
reply_to_msg $msg_id $origin "\${informex_system}"
;;
(*)
echo "[ $DATE ] $cmd command not enabled" | logger -t "telegram_bot" -p daemon.info
informex_unknown="This command is not enabled."
reply_to_msg $msg_id $origin "\${informex_unknown}"
;;
esac
#else
# curl -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=Markdown --data-urlencode text="Is not a command." >/dev/null 2>&1
fi
fi
done
fi
sleep 1
done &