Como construir um bot de telegrama básico com Python 3

Se você é um usuário do Telegram, provavelmente já teve uma 'conversa' com um chatbot. Com sua incrível capacidade de personalização, os bots do Telegram oferecem uma variedade de vantagens — seja para automatizar tarefas ou apenas se divertir um pouco com jogos em seu grupo de bate-papo.

Embora alguns possam achar que desenvolver um bot é uma tarefa difícil, realmente não é. Com o planejamento certo, você pode ter um bot do Telegram instalado e funcionando em menos de uma hora! Veja como criar um bot do Telegram simples que exibe imagens fofas de gatos da Internet quando solicitado.

Começando

Para este tutorial, usaremos Python 3, a biblioteca python-telegram-bot e solicitações , e TheCatAPI .

Cada bot no Telegram tem um token exclusivo que o ajuda a se comunicar com a API do Bot para usar a interface de mensagens do aplicativo. O bot API, um dos recursos mais populares do Telegram entre os desenvolvedores, permite que você use suas mensagens como uma interface.

Para obter o token, inicie uma conversa com @BotFather que, como o nome sugere, é um bot oficial que permite criar e personalizar seus próprios bots. Você pode acessar o bot usando o link fornecido ou, alternativamente, pesquisar '@botfather' no Telegram.

Uma vez no chat, crie seu bot digitando o comando / newbot . Continue a definir o nome e o nome de usuário do seu bot (decidimos nomear o nosso @pawsomebot). Em seguida, você receberá um token exclusivo para o seu bot.

Agora que temos todos os pré-requisitos, é hora de chegar à parte emocionante!

Instalando Bibliotecas

Se você estiver usando o Windows, abra o prompt de comando e digite os seguintes comandos:

 pip install python-telegram-bot
pip install requests

Se você estiver usando macOS ou Linux, use os seguintes comandos em seu terminal. Além disso, no Linux, verifique se você está conectado como um usuário com privilégios sudo.

 pip3 install python-telegram-bot
pip3 install requests

Escrevendo o programa

Crie uma nova pasta em seu computador e abra-a em seu editor favorito. Crie um novo arquivo com o nome main.py. Este arquivo conterá o código-fonte do seu bot.

Agora, vamos importar as bibliotecas que instalamos anteriormente, junto com algumas de suas funções integradas.

 from telegram.ext import Updater, CommandHandler
import requests
import re

O fluxo do programa daqui para frente é acessar TheCatAPI, obter a URL de uma imagem aleatória e enviar essa imagem para o chat do usuário.

Vamos começar com uma função para obter a URL da imagem, o que pode ser feito usando o módulo de solicitações. Nesta função, carregamos os dados JSON de um arquivo aleatório fornecido por TheCatAPI e extraímos sua URL para uso posterior. Para ver o formato do objeto JSON, vá para https://api.thecatapi.com/v1/images/search em seu navegador. Você notará algo assim:

 [{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]

Observe que o objeto JSON é uma matriz que contém um dicionário. Este dicionário contém o URL com a chave 'url'. Para extrair a URL, precisamos fazer referência ao primeiro elemento da matriz e, em seguida, à chave relevante.

 def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url

Em seguida, precisamos enviar esta imagem para o chat de um usuário. Para isso, precisamos de um URL de imagem, bem como o ID exclusivo do chat do usuário. Vamos criar uma função de wrapper para fazer isso. Primeiro, chamamos getUrl () . função para obter a URL de uma imagem aleatória — esta URL muda toda vez que seu programa itera por meio da função.

Em seguida, obtém-se o ID de bate-papo do usuário destinatário, que define o local de destino do bot para mensagens e analisa a URL por meio da função send_photo () embutida da API do Bot.

 def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)

Para saber mais sobre as várias funções integradas da API do Bot e como elas funcionam, fique à vontade para verificar a documentação oficial do Telegram após este tutorial.

Finalmente, vamos criar uma função que controle o funcionamento geral do bot. Esta função — convencionalmente chamada de main () — é onde enviamos uma solicitação HTTP para a API do Bot usando o token obtido no início do tutorial e, em seguida, definimos como será a interação do usuário com o bot. Em um caso tão simples como o nosso, isso significa essencialmente iniciar o bot e chamar a função sendImage () quando solicitado pelo usuário.

 def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Seu programa final deve ser assim:

 from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Seu Próprio Telegram Bot

Parabéns! Você construiu seu próprio bot de alívio de estresse que envia imagens de código aberto dos gatos mais fofos da Internet quando solicitado. Tente executar seu programa e digite / miau no bate-papo do seu bot para ativá-lo.

Embora possa ser um simples bot com funcionalidade limitada, ele mostra o quão poderoso é o ecossistema de desenvolvimento de bots do Telegram. Você pode adicionar qualquer número de sub-rotinas complexas e recursos para melhorar a funcionalidade do seu bot — o céu é o limite. Para saber mais sobre os fantásticos bots do Telegram que os contribuidores criaram ao longo dos anos, verifique nossa lista de bots úteis do Telegram .

Você também pode encontrar uma variedade de programas licenciados de código aberto para bots do Telegram em plataformas como o GitHub. A maioria das licenças de código aberto permite que você use, estude, baixe ou modifique o código-fonte de um programa.

Hospede Seu Bot de Telegram Online

Agora que você tem seu bot instalado e funcionando, tente fechar main.py em seu PC e usar o bot em seu aplicativo de mensagem Telegram. Ele ainda responde ao comando / meow ? Não, não importa.

Como um iniciante, você pode estar confuso sobre por que main.py no seu PC precisa estar instalado e funcionando quando você já criou um bot rodando na Internet. A razão para isso é que o programa usa seu PC como um servidor local para enviar solicitações HTTP às APIs usadas neste programa.

Dessa forma, ter que executar o programa toda vez que quiser usar o aplicativo não é viável nem conveniente. Para resolver esse problema, precisamos remover a dependência do bot do seu dispositivo

Uma maneira de fazer isso é usar uma placa de circuito impresso (PCB) de baixo custo, como Raspberry Pi , para configurar seu próprio servidor web e usá-lo para executar seu programa. Ele tem os mesmos benefícios de executar o programa em seu PC sem os custos de mantê-lo ligado o dia todo e a noite, uma vez que os PCBs tendem a ter uma pegada de energia significativamente menor.

Como alternativa, você também pode implantar seu programa na nuvem. Vá para uma plataforma de hospedagem de aplicativo da web, como Heroku, AWS, Google Cloud ou Microsoft Azure e escolha uma assinatura que melhor atenda às suas necessidades. Recomendamos escolher uma avaliação gratuita ou assinatura e atualizá-la à medida que aumenta a escala ou o escopo de seu programa.