Bash scripts para bot Telegram

Linux bash scripts para usar em bots no Telegram.

---

#!/usr/bin/env bash

########################

# test_telegr_bot_send_stickers.sh
# precisa do: 1) token, 2) chat_id, 3) código do sticker
# (acha com getupdates info de um sticker enviado a alguém)

########################

# ---- Variáveis ---- #

# TOKEN1=""

# URL_UP='https://api.telegram.org/bot"$TOKEN1"/getupdates'

# ------------------- #

read -p "*** Vamos ver os updates do bot. Tecle Enter ***"

read -p "Digite o TOKEN do bot : " TOKEN1

# ------------------- #

echo "Verificando..."

sleep 2

# curl "$URL_UP"

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# ------------------- #

echo "*** Enviar sticker ***"

sleep 2

echo ""

read -p "Digite o token : " TOKEN

read -p "Digite o chat_id : "

read -p "Digite o numero do sticker : "

# ------------------- #

# EXEMPLO:
# <a href="https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg">https://api.telegram.org/bot/sendSticker?chat_id=&sticker=BCBBADAgADOQADfyekzlsDlKEqOOd72VLKAg

curl https://api.telegram.org/bot"TOKEN"/sendSticker?chat_id="CHAT_ID"&sticker="TICKER"

# ------------------- #

echo "Confere..."
sleep 2

echo ""

curl https://api.telegram.org/bot"TOKEN1"/getupdates

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# test_bot_enviar_arquivo.sh

# telegram bot enviar arquivo. tem que ter token e chat_id

#################

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID

read -p "Digite o nome/caminho do arquivo : " FILE

curl -v -F "chat_id=$CHAT_ID" -F document=@"$FILE" https://api.telegram.org/bot"TOKEN"/sendDocument

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# tgr_msg.sh

# telegram bot envia mensagem

#################

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

clear

read -p "Digite o Token : " TOKEN

read -p "Digite o chat_id : " CHAT_ID ; read -p "Digite a mensagem : " MSG

curl -s -X POST "$URL" -d chat_id="$CHAT_ID" -d text="$MSG"

echo ""

# fim do script

---

#!/usr/bin/env bash

#################

# trg_search_id.sh

# busque atualizações de bot e procure o id do bate-papo

#################

read -p "Digite o Token : " TOKEN

curl https://api.telegram.org/bot"TOKEN"/getUpdates

echo ""

# fim do script

---

Até breve!

Criar Telegram bot rodando no Linux?

Telegram como criar um bot? Um bot bem básico no Linux só para iniciar?

Aqui o que consegui entender...

---

1) Precisa do: BotFather

2) Pode usar uma plataforma para programar o bot por exemplo:

Menu Builder Bot ou chatfuelbot

---

OBS:

Telegram comandos botfather - Comandos do botfather:

Eu posso ajudá-lo a criar e gerenciar bots do Telegram. Se você é novo na API Bot, consulte o manual (https://core.telegram.org/bots). Você pode me controlar enviando estes comandos:

/newbot - create a new bot
/mybots - edit your bots [beta]

Edit Bots
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setcommands - change the list of commands
/deletebot - delete a bot

Bot Settings
/token - generate authorization token
/revoke - revoke bot access token
/setinline - toggle inline mode (https://core.telegram.org/bots/inline)
/setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results)
/setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings
/setjoingroups - can your bot be added to groups?
/setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups

Games
/mygames - edit your games (https://core.telegram.org/bots/games) [beta]
/newgame - create a new game (https://core.telegram.org/bots/games)
/listgames - get a list of your games
/editgame - edit a game
/deletegame - delete an existing game

---

Comandos que usei no botfather do Telegram:

1) /start
2) /newbot

meumeubot

username: meumeu

---

Feito! Parabéns pelo seu novo bot. Você o encontrará em:

t.me/meumeubot

---

Com isso feito, você recebeu a chave de API do seu bot. A chave da API é como o Telegram sabe que o código que você escreve está associado a esse bot em particular. Todo bot tem sua própria chave de API e você não deve compartilhá-lo com ninguém, ou alguém pode invadir seu bot e fazer com que ele pratique más ações. Isso encerra nossa conversa com o BotFather por enquanto no código!

---

O TOKEN - Use this token to access the HTTP API:

numeros-e-letras-do-meu-token

---

Agora você pode adicionar uma descrição, sobre seção e foto de perfil para o seu bot, consulte /help para obter uma lista de comandos. A propósito, quando você terminar de criar seu bot legal, execute um ping no nosso Suporte de Bot se quiser um nome de usuário melhor para ele. Apenas verifique se o bot está totalmente operacional antes de fazer isso.

---

Meumeu

username: meumeubot

t.me/meumeubot

---

Mantenha seu token seguro e armazene-o com segurança, ele pode ser usado por qualquer pessoa para controlar seu bot. Para uma descrição da API Bot, consulte esta página:

https://core.telegram.org/bots/api

---

O bot pode funcionar no Linux.

Configurando as gemas e o diretório do bot.

Abra o terminal e faça mkdir telegram-bot.

Isso cria um novo diretório para os arquivos do seu bot.

É melhor mantê-los confinados em uma pasta para facilitar o gerenciamento. Navegue para o diretório com cd telegram-bot e faça o seguinte:

mkdir ~/Documentos/telegram-bot

cd ~/Documentos/telegram-bot

touch Gemfile

touch bot.rb

atom Gemfile

atom bot.rb

---

Oneliner?

mkdir ~/Documentos/telegram-bot; cd ~/Documentos/telegram-bot ; touch Gemfile; touch bot.rb; atom Gemfile ; atom bot.rb

---

OBS:

Isso cria dois arquivos em branco, um para especificar as gemas necessárias e outro para o código do bot. O último comando abre esses dois arquivos.

---

CONTINUANDO...

---

No arquivo Gemfile cole o seguinte:

source 'https://rubygems.org'
gem 'telegram_bot'

---

Isso diz ao Bundler para pegar a interface do Ruby para a API do Telegram no rubygems.org. Para concluir a configuração da gema, volte ao seu terminal e digite bundle. É isso para a configuração das gemas, agora estamos finalmente entrando no código.

---

Codificando seu primeiro bot de Telegram

---

O código real que será executado constantemente no servidor está dentro do bot.rb. ele está vazio no momento, mas aqui vamos vincular a gema do Telegram que acabamos de agrupar e criar um bot. Não há muito código para escrever.

---

Ele examina o que cada parte do código faz e o escreve à medida que avançamos.

require 'telegram_bot'
token = 'TOKEN'
bot = TelegramBot.new(token: token)

(Substitua o TOKEN pelo token da API que você copiou do BotFather)

---

O Ruby facilita bastante adivinhar o que o código fará. As três linhas acima adicionam a funcionalidade bot do Telegram ao seu arquivo e, em seguida, criam um novo objeto bot da classe TelegramBot, autenticado com seu token para que o programa saiba para onde enviar os dados.

A próxima parte é um grande loop. Parece confuso no começo, mas é fácil de separar.

---

bot.get_updates(fail_silently: true) do |message|
puts "@#{message.from.username}: #{message.text}"
command = message.get_command_for(bot)

message.reply do |reply|
case command
when /start/i
reply.text = "Tudo que posso fazer é dizer Olá. Tente o comando /greet."
when /greet/i
reply.text = "Olá, #{message.from.first_name}. 🤖"
else
reply.text = "IEu não tenho idéia do que #{command.inspect} significa."
end
puts "enviando #{reply.text.inspect} to @#{message.from.username}"
reply.send_with(bot)
end
end

---

A primeira linha diz ao bot para continuar ouvindo comandos. E, quando recebe um comando para passá-lo para a variável de mensagem.
A linha de put registra o comando no seu terminal para que você possa ver o que está acontecendo enquanto o bot é executado.
As ações de resposta do bot são armazenadas em uma declaração de caso.
A entrada da instrução de caso é alimentada a partir da variável de mensagem depois de limpa pelo método get_command_for da gema.
O texto de resposta do bot é definido dependendo do comando armazenado e, finalmente, enviado com send_with antes de o loop reiniciar. Com essa configuração, agora você pode encontrar seu bot no Telegram, enviar os comandos /start e /greet e assisti-lo em ação.

---

Para fazer isso, salve as alterações no Atom e execute:

ruby bot.rb

No terminal. Enquanto esse terminal estiver aberto e funcionando, seu bot enviará respostas!

---

Personalizando seu novo e brilhante bot - O bot que você acabou de criar é bom, mas não é muito interessante.

Os bits básicos estão lá, o que significa que você pode trocá-los e ampliá-los facilmente.

As partes a serem observadas ao personalizar são as linhas when/ command/ i e o texto entre as aspas nas linhas reply.txt.

Essas são as entradas que seu bot aceita e as mensagens que ele envia de volta como respostas. Portanto, se você quiser dizer algo diferente como resposta ao comando /greet, altere o valor de reply.text abaixo da linha de comando greet (quando /greet /i).

---

Aqui está uma variação que você pode tentar:

when /greet/i
greetings = ['bonjour', 'hola', 'hallo', 'sveiki', 'namaste', 'salaam', 'szia', 'halo', 'bom dia']
reply.text = "#{greetings.sample.capitalize}, #{message.from.first_name}!"

---

Aqui, criei uma matriz com algumas maneiras diferentes de dizer olá e, em seguida, adicionei uma à mensagem aleatoriamente usando o método de amostra

---

Transformando seu bot em algo incrível - você pode adicionar quantos comandos, respostas e recursos quiser ao bot.

A maior parte é imaginação e muito pesquisa em ferramentas de busca na web à medida que avança.

Se você quiser aprender muitas coisas aplicáveis a esse bot, comece com Learn Ruby the Hard Way para entender o básico do idioma.

Com um pouco de prática e uma dependência saudável do StackOverflow, você poderá:

Conectar outras APIs para extrair dados de fontes como Airtable, Slack, RSS ou Twitter.

É aí que entra a funcionalidade realmente interessante - você pode criar um bot que atua como uma interface de conversação para um conjunto de dados ou recursos, como um bot que retorna resultados de pesquisa do Twitter ou postagens no Slack.

---

ARMAZENE A ENTRADA DO USUÁRIO EM UM BANCO DE DADOS.

Você pode criar um bot do Telegram que ofereça suporte automatizado aos usuários ou responda a perguntas e armazene seus endereços de e-mail em um banco de dados. A gema Sequel facilita a criação, gravação, edição e leitura de bancos de dados.

Construa uma aventura de texto. Colossal Cave Adventure, um dos primeiros jogos de terminal, foi transportado para o Telegram como um bot.

Se você precisar de inspiração, poderá ler o código-fonte bot de outras pessoas e verificar uma lista de bots do Telegram. Tente descobrir como eles funcionam e recriá-los como prática.

---

Executando seu bot 24/7 - No momento, seu bot está sendo executado no seu terminal no seu computador.

Tudo bem até que você precise reiniciar o computador, o wi-fi cai ou o computador entra no modo de suspensão. Quando isso acontece, ele encerra o processo do bot e os usuários não recebem uma resposta dele. O processo de mover seu bot de um ambiente de desenvolvimento (seu computador em que você usou o Atom para gravá-lo) para um ambiente de produção (um servidor) é conhecido como implantação.

---

Existem algumas opções para implantar seu bot, mas nos dois casos começaremos fazendo o upload dos arquivos no Bitbucket.

O Bitbucket permite que você use o git, um sistema de controle de versão que ajuda você a fazer e acompanhar com segurança as alterações no código do seu bot.

Ao fazer o upload dos arquivos do seu bot para o Bitbucket, você pode usar o Bitbucket como uma maneira de capturar os arquivos do bot quando estiver conectado ao host. Inscreva-se no Bitbucket e crie um novo repositório.

---

Com o terminal aberto e no mesmo diretório que o código-fonte do seu bot, digite o seguinte:

git init
git add .
git commit -m 'initial commit'

---

Agora, siga as instruções mostradas pelo Bitbucket depois de criar o novo repositório. Os meus são: Depois de inserir esses dois comandos destacados no meu terminal e fornecer a minha senha do Bitbucket quando solicitado, os arquivos são enviados. Com seu código vivendo na nuvem, é hora de escolher uma maneira de implantar.

---

Implantando com um Raspberry Pi - Este pequeno computador Raspberry Pi na minha mesa hospeda vários bots - Um Raspberry Pi é um ótimo investimento se você planeja criar e implantar bots - você pode obter um a partir de US $ 7 mais o preço de um cartão SD. Ele usa muito pouca energia, para que você possa mantê-la ligada o tempo todo e não se preocupar com o custo. Pode ser tentador comprar um pacote que vem com teclado, mouse e estojo, mas tudo o que você precisa é de um carregador USB, cartão SD, cabo Ethernet e o próprio computador. Você provavelmente já tem a maioria dessas coisas em seu escritório. Implantando com um servidor em nuvem - Você não precisa possuir o computador em que seu bot está executando, pode usar a memória e a energia da máquina de outra pessoa para executá-lo remotamente. As soluções populares para implantação na nuvem incluem Amazon Web Services (AWS), DigitalOcean e Heroku.

---

Dos três, os mais novos acho que são são DigitalOcean e Heroku. Ao se inscrever no DigitalOcean e criar uma nova conta, você aprenderá como se conectar ao servidor via SSH e iniciar o console. A partir daqui, é o mesmo processo que você fez na sua máquina local, independentemente do servidor que você está usando.

No final, parece ser, vamos para a implantação real.

---

O processo de implantação - em um servidor novo - seja um Raspberry Pi ou um servidor em nuvem como o Digital Ocean - você precisará instalar Ruby, Bundler e Git:

sudo apt-get update
sudo apt-get upgrade
curl -L https://get.rvm.io | bash -s stable --ruby
sudo apt-get install bundler
sudo apt-get install git

---

Em seguida, crie um novo diretório para o seu bot, navegue até lá e faça o download dos arquivos do Bitbucket com os seguintes comandos:

mkdir bots
cd bots
git clone https://[email protected]/meu_repo_bitbucket/telegram-bot.git

---

Lembre-se de substituir o URL acima (https://meu_repo_bitbucket…) pelo URL do repositório do seu bot no Bitbucket.

Você encontrará todo o comando clone por meio do Bitbucket, portanto não precisará fazer isso manualmente. Em seguida, digite bundle para instalar as dependências da gem e, em seguida, ruby bot.rb para iniciar a execução permanente do bot.

---

Nota:

Se você estiver acessando seu servidor via SSH, precisará executar o bot com:

nohup ruby bot.rb

Para garantir que o bot não pare de funcionar quando a sessão SSH for encerrada. Agora você está livre para fechar a janela do terminal, seguro de que seu bot está emitindo um bipe silencioso em segundo plano. Isso conclui sua primeira facada em um bot do Telegram. Ao longo do caminho, você aprendeu sobre o terminal, Ruby, gems, a API do Telegram e como implantar um bot em um servidor.

---