#!/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 &