Em Habré, e não apenas isso, tanto se falou sobre bots que é até demais. Mas, tendo me interessado neste tópico há algumas semanas, eu ainda não conseguia encontrar material normal: todos os artigos eram para bonecos e estavam limitados a enviar uma mensagem em resposta a uma mensagem de usuário ou eram irrelevantes. Isso me levou a escrever um artigo que explicasse a um iniciante como eu como escrever e lançar um bot mais ou menos significativo (com a possibilidade de expandir a funcionalidade).
Parte 1: Registrar um bot
A parte mais simples e mais descrita. Muito brevemente: você precisa encontrar o bot do
@BotFather , escrever para ele
/ start ou
/ newbot , preencher os campos que ele pede (o nome do bot e seu nome abreviado) e receber uma mensagem com o token do bot e um link para a documentação. O token deve ser salvo, de preferência confiável, pois é a única chave para autorizar o bot e interagir com ele.
Parte 2: Preparando para escrever código
Como já mencionado no título, escreveremos o bot em Python. Este artigo descreve como trabalhar com a biblioteca PyTelegramBotAPI (Telebot). Se você não possui o Python instalado, primeiro você precisa fazer isso: no terminal Linux, é necessário inserir
sudo apt-get install python python-pip
Se você usa o Windows, precisa fazer o download do Python no site oficial.
Depois, no terminal Linux ou no prompt de comando do Windows, digite
pip install pytelegrambotapi
Agora você está pronto para escrever o código.
Parte 3: receba mensagens e diga "Olá"
Uma pequena digressão. Um telegrama pode informar o bot sobre as ações do usuário de duas maneiras: por meio de uma resposta a uma solicitação do servidor (Long Poll) e pelo Webhook, quando o próprio servidor do Telegram envia uma mensagem que alguém escreveu ao bot. O segundo método claramente parece melhor, mas requer um endereço IP dedicado, e o SSL é instalado no servidor. Neste artigo, quero falar sobre como escrever um bot, não como configurar um servidor, portanto usaremos a pesquisa longa.Abra seu editor de texto favorito e vamos escrever o código bot!
A primeira coisa a fazer é importar nossa biblioteca e conectar o token do bot:
import telebot; bot = telebot.TeleBot('% %');
Agora declare um método para receber mensagens de texto:
@bot.message_handler(content_types=['text']) def get_text_messages(message):
Nesta seção do código, declaramos um ouvinte para mensagens de texto e um método para processá-las. O campo content_types pode assumir valores diferentes, e não apenas um, por exemplo
@bot.message_handler(content_types=['text', 'document', 'audio'])
Irá responder a mensagens de texto, documentos e áudio. Mais detalhes podem ser encontrados na
documentação oficial.Agora vamos adicionar um pouco de funcionalidade ao nosso método: se o usuário escrever "Olá" para nós, dizeremos "Olá, como posso ajudá-lo?". E se eles escreverem o comando "/ help", solicitaremos que o usuário escreva "Olá":
if message.text == "": bot.send_message(message.from_user.id, ", ?") elif message.text == "/help": bot.send_message(message.from_user.id, " ") else: bot.send_message(message.from_user.id, " . /help.")
Este pedaço de código não requer comentários, como me parece. Agora precisamos adicionar apenas uma linha ao nosso código (fora de todos os métodos).
bot.polling(none_stop=True, interval=0)
Agora, nosso bot perguntará constantemente ao servidor do Telegram "Alguém escreveu para mim?" E se escrevermos para o nosso bot, o Telegram enviará a nossa mensagem. Nós salvamos o arquivo inteiro e escrevemos no console
python bot.py
Onde bot.py é o nome do nosso arquivo.
Agora você pode escrever um bot e ver o resultado:
Parte 4: Botões e segmentos de mensagens
O envio de mensagens é sem dúvida divertido, mas é ainda mais divertido ter um diálogo com o usuário: faça perguntas e obtenha respostas para ele. Suponha que agora nosso bot pergunte ao usuário seu nome, sobrenome e idade. Para isso, usaremos o método register_next_step_handler do bot:
name = ''; surname = ''; age = 0; @bot.message_handler(content_types=['text']) def start(message): if message.text == '/reg': bot.send_message(message.from_user.id, " ?"); bot.register_next_step_handler(message, get_name);
E assim, gravamos os dados do usuário. Este exemplo mostra um exemplo muito simplificado; para o bem, você precisa armazenar dados intermediários e estados do usuário no banco de dados, mas hoje estamos trabalhando com um bot e não com bancos de dados. O toque final - pedimos aos usuários para confirmarem que tudo foi inserido corretamente, mas não apenas assim, mas com os botões! Para fazer isso, edite o código do método get_age um pouco
def get_age(message): global age; while age == 0:
E agora o nosso bot envia o teclado, mas se você clicar nele, nada acontecerá. Porque não escrevemos um método manipulador. Vamos escrever:
@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == "yes": #call.data callback_data, .... # , bot.send_message(call.message.chat.id, ' : )'); elif call.data == "no": ... #
Resta apenas anexar uma linha ao início do arquivo:
from telebot import types
Isso é tudo, salve e execute nosso bot: