Skip to content

Instantly share code, notes, and snippets.

@shellscriptx
Last active August 8, 2019 19:18
Show Gist options
  • Save shellscriptx/e02bfed46ba4f8a8a1e8003a95255eea to your computer and use it in GitHub Desktop.
Save shellscriptx/e02bfed46ba4f8a8a1e8003a95255eea to your computer and use it in GitHub Desktop.
Executando script a partir de um comando via Telegram Bot.

Considere os scripts a seguir:

script.sh

#!/bin/bash

# Salva os argumentos posicionais.
var=$*

# Imprime o valor.
echo "args = $var"

bot.sh

#!/bin/bash

# Importando API
source ShellBot.sh

# Token do bot
bot_token='<TOKEN_AQUI>'

# Exemplo trabalhando com o modo de retorno do tipo: value
ShellBot.init --token "$bot_token" --monitor
ShellBot.username

while :
do
	# Obtem as atualizações
	ShellBot.getUpdates --limit 100 --offset $(ShellBot.OffsetNext) --timeout 30
	
	# Lista o índice das atualizações
	for id in $(ShellBot.ListUpdates)
	do
	# Inicio thread
	(
		# Remove os argumentos e avalia somente o comando.
		# ${var%% *} - remove todas as expressões depois do primeiro espaço (inclusive).
		# Exemplo: '/exec arg1 arg2 arg3' -> '/exec'
		case ${message_text[$id]%% *} in
			# Executa o script passando somente os valores.
			# {var#* } - remove somente a primeira expressão antes do espaço (inclusive).
			# Exemplo: '/exec arg1 arg2 arg3' -> 'arg1 arg2 arg3'
			/exec) ./script.sh ${message_text[$i]#* };; # comando
		esac
		:
	) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
	done
done

Execute o script bot.sh.

./bot.sh

Envie o comando abaixo para o bot com a seguinte sintaxe:

/exec <valor1> <valor2> ...

obs: observe o retorno do script na saída padrão do terminal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment