ShellBot - Crie Bots para Telegram em Shell Script

ShellBot é uma API desenvolvida em Shell Script com o propósito de facilitar e agilizar a criação de bots na plataforma Telegram. O fato de ter sido desenvolvido na linguagem script nativa do ambiente Linux e que utiliza o interpretador de comandos BASH, oferece ao usuário uma portabilidade entre sistemas do mesmo dialeto.

[ Hits: 15.978 ]

Por: Juliano Santos em 12/07/2017


ShellBot API - Criando bot na plataforma Telegram



Acredito que você já tenha ouvido falar no Telegram ou até mesmo utiliza o aplicativo como padrão para troca de mensagens. Ele possui inúmeros recursos, porém, existe um que merece ser mencionado. O suporte a bots, tão comumente chamados de robôs e, é claro, o Telegram disponibiliza sua API para desenvolvedores criarem seus próprios bots para as mais diversas finalidades.

Veja: Telegram APIs

Você também irá encontrar API's não oficiais desenvolvidas em diversas linguagens, tais como: Java, Python, PHP, C#, Lua, Go etc.

Veja: Bot Code Examples

Infelizmente, não havia encontrado nenhum projeto desenvolvido em shell script para este propósito. No inicio, minha ideia era apenas criar um simples bot de boas-vindas em shell puro e, felizmente, tive êxito (https://t.me/shellscriptx_bot).

Com o tempo, novos recursos foram surgindo e a manutenção do código ficou cada vez mais difícil devido à ausência de uma API, foi então que a necessidade de criar uma surgiu e então nasceu o ShellBot.

Atualmente, a API ShellBot está na versão 4.2 e disponível no Github.
Download:

git clone https://github.com/shellscriptx/ShellBot.git && cd ShellBot

Copie o arquivo "ShellBot.sh" para a pasta de projeto do seu bot.

Exemplo:

cp ShellBot.sh /projeto/meu_bot/

Como usar

Para utilizar as funções do ShellBot, é necessário importá-lo em seu script.

Exemplo:

#!/bin/bash
# Meu bot

# Importando
source ShellBot.sh

Ou:

#!/bin/bash
# Meu bot

# Importando
. ShellBot.sh

Não é necessário permissão para execução. É recomendado que o arquivo "ShellBot.sh" esteja no mesmo diretório do projeto do seu bot. Caso contrário, é necessário informar o caminho completo. Exemplo:

source /home/usuario/ShellBot.sh

Feito isso, todas as funções e variáveis estarão disponíveis em seu projeto.

Infelizmente, não irei conseguir abordar aqui todo conteúdo acerca do ShellBot, mas posso recomendar a leitura da documentação do mesmo:
O código abaixo é um exemplo de um WelcomeBot, que envia uma mensagem personalizada de boas-vindas ao usuário no momento em que ingressa ao grupo (disponível no Github).

#!/bin/bash

# script: WelcomeBot.sh
#
# Para melhor compreensão foram utilizados parâmetros longos nas funções; Podendo
# ser substituídos pelos parâmetros curtos respectivos.

# Importando API
source ShellBot.sh

# Token do bot
bot_token='<TOKEN_AQUI>'

# Inicializando o bot
ShellBot.init --token "$bot_token"
ShellBot.username

# boas vindas
msg_bem_vindo()
{
	local msg

	# Texto da mensagem
	msg="&#127380; [@${message_new_chat_member_username[$id]:-null}]
"
        msg+="&#128483; Olá *${message_new_chat_member_first_name[$id]}*"'!!

'
        msg+="Seja bem-vindo(a) ao *$message_chat_title*.

"
        msg+='`Se precisar de ajuda ou informações sobre meus comandos, é só me chamar no privado.`'"[@$(ShellBot.username)]"

	# Envia a mensagem de boas vindas.
	ShellBot.sendMessage --chat_id ${message_chat_id[$id]} 
							--text "$(echo -e $msg)" 
							--parse_mode markdown

	return 0
}

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
	(
		# Chama a função 'msg_bem_vindo' se o valor de 'message_new_chat_member_id' não for nulo.
		[[ ${message_new_chat_member_id[$id]} ]] && msg_bem_vindo

		# Verifica se a mensagem enviada pelo usuário é um comando válido.
		case ${message_text[$id]} in
			*)
				:
				# <BOT COMANDOS> ...
			;;
		esac
	) & # Utilize a thread se deseja que o bot responda a várias requisições simultâneas.
	done
done
#FIM

A atualização da documentação está em andamento, ou seja, algumas informações podem estar ausentes. Alguns exemplos de scripts na utilização da API estão disponíveis no repositório.

Veja também:
Fiquem à vontade para distribuir, modificar, colaborar e espero que, de alguma forma, seja útil para vocês.

Qualquer dúvida ou sugestão, é só entrar em contato:

Telegram: https://t.me/x_SHAMAN_x
Telegram (Grupo): https://t.me/shellscript_x
Email: shellscriptx@gmail.com

   

Páginas do artigo
   1. ShellBot API - Criando bot na plataforma Telegram
Outros artigos deste autor

Conheça o projeto BASHSRC

Leitura recomendada

Entendendo, criando e editando pacotes Debian (.deb)

cal2svg - brincando com shell script e arquivos vetoriais SVG

Aviso de queda de Internet via Sendxmpp

Conheça o projeto BASHSRC

Apresentando o Yad - "zenity melhorado"

  
Comentários
[1] Comentário enviado por maik em 16/07/2017 - 01:58h

Excelente trabalho, parabéns pelo projeto!

[2] Comentário enviado por CapitainKurn em 19/07/2017 - 15:03h

Muito bom! A algum tempo postei aqui no VOL https://www.vivaolinux.com.br/dica/Usando-o-Yowsup-para-enviar-comandos-ao-Shell/ Mas acabei abandonando a idéia por problemas com o WhatsApp que com constantes alterações tornou seu uso impraticável. Já está nos meus favoritos! Parabéns!

[3] Comentário enviado por x_SHAMAN_x em 19/07/2017 - 19:30h


[2] Comentário enviado por CapitainKurn em 19/07/2017 - 15:03h

Muito bom! A algum tempo postei aqui no VOL https://www.vivaolinux.com.br/dica/Usando-o-Yowsup-para-enviar-comandos-ao-Shell/ Mas acabei abandonando a idéia por problemas com o WhatsApp que com constantes alterações tornou seu uso impraticável. Já está nos meus favoritos! Parabéns!


Obrigado !! Farei o possível para manter o projeto em sincronia com as atualizações da API do Telegram e espero que possa ser útil para alguém.

[4] Comentário enviado por antonioamazonas em 29/07/2017 - 23:23h

Muito bom !!!!
excelente mesmo !!!
Obrigado!

[5] Comentário enviado por xerxeslins em 13/08/2017 - 10:10h

Lindo isso, hein!

Tenho uma dúvida, pois sou muito noob nisso.

Como fazer para o bot responder comandos dos usuários dentro de um grupo e não apenas em chat privado?

Edit: achei! o bot precisa de permissao no grupo :D

--
If it ain't broke, fix it until it is.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts