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: 16.357 ]

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

Shell Script como serviço no Windows

Script GitPratico para criar repositórios remotos sem logar no GitHub

Ingressando estações de trabalho Ubuntu no AD com Closed In Directory

Liberar navegação para Speedy Home

Script com muitas utilidades para arquivos e pastas

  
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