LINUX.ORG.RU

Telegram bot on bash

 , ,


0

2

Приветствую, сообщество!
Подскажите пожалуйста, как реализовать перехват сообщений в telegram. Код приложу, то что пытался делать. Принимает 1 сообщение, дальше молчит.

#!/bin/bash
#Telegram message bot
user_id="my_id"
token="my_token"
TEXT="Test test"
URL="https://api.telegram.org/bot$token"
c_msg_send=$URL'/sendMessage'
#curl -s "$c_msg_send" -d "chat_id=$user_id" -d "text=$TEXT" # > /dev/null

send_text() 
{
	curl -s "$c_msg_send" -d "chat_id=$user_id" -d "text=$1"
}
#send_text "$1"
while true
do
		#n1=`curl -# "$URL/getUpdates" | wc -l`
		#if [ "$n1" -eq "$(curl -# "$URL/getUpdates" | wc -l)" ]; then
		#	n2=`curl -# "$URL/getUpdates" | wc -l`
		#else 
		#	get_id=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/' | awk '{FS=" "}{print $8}' | sed 's/\:/\ /g; s/\,/\ /g')
		#	get_msg=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/'  | awk '{FS="text "}{print $37}') #| sed 's/\:/\ /g; s/\,/\ /g')
		#	continue
		
		#fi
		#get_id=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/' | awk '{FS=" "}{print $8}' | sed 's/\:/\ /g; s/\,/\ /g')
		#get_msg=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/'  | awk '{FS="text "}{print $37}') #| sed 's/\:/\ /g; s/\,/\ /g')
		


echo $get_id
echo $get_msg
done
В цикле закоменчены попытки

Не угадал автора по заголовку

:(

cast Spoofing

Stil ★★★★★
()

#|

Убери комментарии, а то не понятно как это работает. Если этот знак там и должен быть, то заключи его в кавычки.

anonymous
()
Ответ на: комментарий от anonymous
#!/bin/bash
#Telegram message bot
user_id="my_id"
token="my_token"
TEXT="Test test"
URL="https://api.telegram.org/bot$token"
c_msg_send=$URL'/sendMessage'
#curl -s "$c_msg_send" -d "chat_id=$user_id" -d "text=$TEXT" # > /dev/null

send_text() 
{
	curl -s "$c_msg_send" -d "chat_id=$user_id" -d "text=$1"
}
#send_text "$1"
while true
do
		n1=`curl -# "$URL/getUpdates" | wc -l`
		if [ "$n1" -eq "$(curl -# "$URL/getUpdates" | wc -l)" ]; then
			n2=`curl -# "$URL/getUpdates" | wc -l`
		else 
			get_id=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/' | awk '{FS=" "}{print $8}' | sed 's/\:/\ /g; s/\,/\ /g')
			get_msg=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/'  | awk '{FS="text "}{print $37}') #| sed 's/\:/\ /g; s/\,/\ /g')
			continue
		
		fi
		get_id=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/' | awk '{FS=" "}{print $8}' | sed 's/\:/\ /g; s/\,/\ /g')
		get_msg=$(curl -# "$URL/getUpdates"| tail -n1 | sed -r 's/\"/\ /g; s/\{/\ /g; s/\}/\ /g; s/\]/\ /g; s/\,/G/'  | awk '{FS="text "}{print $37}') #| sed 's/\:/\ /g; s/\,/\ /g')
		


echo $get_id
echo $get_msg
done

Конструкция в цикле считывает 1 сообщение, потом никакой реакции.

e1maker
() автор топика
Ответ на: комментарий от e1maker

Всё-таки заключи # в кавычки.

anonymous
()

Зойчем?

Писать корявые заголовки на рунглише?

mos ★★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.