Essa publicação é baseada na minha primeira experiência criando um chatbot para o Telegram usando Python. O código fonte dessa experiência pode ser encontrado no meu Github.
The Botfather
O Telegram facilita muito a criação de bots para seu sistema. Além de uma documentação muito boa e uma API muito simples de usar, ele possui o BotFather, um bot que ajuda qualquer um a criar seu próprio bot.
Segundo a documentação do Telegram:
BotFather is the one bot to rule them all. It will help you create new bots and change settings for existing ones.
Então vamos lá. Para começar é preciso acessar o @BotFather e fazer o registro do seu novo chatbot.
Para qualquer criação ou configuração de bot é preciso acessá-lo. E como vamos criar um novo bot, acessamos o link @BotFather.
Lá você terá acesso a diversos comandos, dentre eles o /start, que irá apresentar a lista desses comandos e o /newbot, que serve para a criação de um novo bot.
Quando executarmos o /newbot ele pede algumas configurações, como o nome e o username que serão utilizados pelo bot. Nada complicado.
Seu bot será como um usuário comum do Telegram, com um “nome para exibição” e um “nome de usuário” (username) para controle.
Assim que forem preenchidos os dados necessários ele irá gerar um token para ser utilizado no seu script. Esse token é único e serve como uma “senha” para seu bot, portanto deve ser mantido em sigilo.
Para saber mais sobre o @BotFather, acesse a documentação do Telegram que fala sobre bots para desenvolvedores.
Armazenando e acessando o token
Agora que já temos o token do nosso bot, devemos guardá-lo em uma variável de ambiente para que possamos acessá-lo posteriormente no nosso script Python.
Na linha de comando, execute o seguinte:
$ export BOT_API_TOKEN="<aqui vai o token gerado pelo botfather>"
Agora você poderá recuperá-lo facilmente em seu script Python com apenas duas linhas de código.
import os token = os.environ['BOT_API_TOKEN']
Obs: Esta é apenas uma sugestão de como armazenar essa informação. Você pode guardar seu token da maneira que achar melhor.
Implementando os comandos
Um pacote que facilita muito a vida de quem está desenvolvendo um bot para o Telegram é o pyTelegramBotAPI. Com ele basta adicionar decorators nas suas funções e elas passarão a atender aos comandos recebidos.
Podemos usar o seguinte comando para instalar o pacote via pip:
$ pip install pyTelegramBotAPI
Agora chegou a hora de implementar os comandos que controlarão o bot.
Vou abordar somente um tipo de decorator e de resposta a caráter de exemplo. Através da documentação do pyTelegramBotAPI você consegue facilmente implementar diversas outras formas de input e output para o seu bot.
Começamos o script em Python fazendo nossos imports e iniciando o telebot com o token do Telegram gerado pelo @BotFather, como no exemplo de código abaixo.
import os import telebot bot = telebot.TeleBot(os.environ['BOT_API_TOKEN'])
Agora é só começar a implementar os comandos. No exemplo abaixo eu estou implementando uma mensagem de boas vindas para os comandos /start e /help.
@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, u"Olá, bem-vindo ao bot!")
No final do script adicionamos o método bot.polling() para inicializar o nosso novíssimo bot.
bot.polling()
Basta executar o script em linha de comando e o seu bot está pronto para começar a ser testado.
$ python bot.py
Para executar o teste, basta acessar seu Telegram e seguir o usuário com o username que você deu para seu bot lá no começo do processo, com o @BotFather.
E voilá!
Simples, não é? Veja como nosso script em Python ficou bem pequeno.
import os import telebot bot = telebot.TeleBot(os.environ['BOT_API_TOKEN'])
@bot.message_handler(commands=['start', 'help']) def send_welcome(message): bot.reply_to(message, u"Olá, bem-vindo ao bot!")
bot.polling()
Publicado originalmente no Medium.