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