Escrevendo um bot de telegrama em python usando a parte 1 da biblioteca de telebot

Atenção, a segunda parte do artigo foi publicada , eu recomendo a leitura



Digressão lírica


Hoje, os bots são uma ferramenta multifuncional, tanto para negócios quanto para entretenimento. Pessoalmente, acredito que o futuro esteja com eles. Obviamente, depois de ler este artigo, você não poderá criar grandes projetos, mas interessar-se e começar é bastante.

Instalação e configuração


Para começar, vamos baixar o próprio python. Você pode fazer isso no site oficial . Não se esqueça de verificar adicionar ao PATH durante a instalação! Depois de instalar o python, precisamos de um bom editor de código. O JetBrains vem em socorro com seu PyCharm gratuito. Estamos perto, resta fazer o download da biblioteca de telebot. Para fazer isso, vá para a linha de comando e escreva:

pip install pytelegrambotapi 

Se tudo correu bem, podemos continuar!

VPN


Acho que todo mundo sabe sobre o bloqueio de telegramas na Rússia e a única solução, como sempre, é a VPN. Pessoalmente, recomendo o Windscribe , pois eles te dão 2 GB. o tráfego é totalmente gratuito!

Pai bot


Na busca por telegrama, encontramos Bot Farher e criamos nosso bot usando o comando / newbot. Em seguida, digite o nome e o nome de usuário. Observe que o nome de usuário deve terminar em bot!

imagem

Como você pode ver, recebemos um token de API especial com o qual você pode controlar seu bot (no meu caso, é: 776550937: AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM ). Você pode se lembrar do seu token, mas eu recomendo anotá-lo.

Código


Chegou o momento em que todos estavam esperando. Abra o PyCharm e crie um novo projeto.

imagem

Aqui eu recomendo colocar tudo como meu (o nome, é claro, pode ser alterado). Depois de criar o projeto, vamos criar um arquivo no qual nosso código estará. Clique com o botão direito do mouse na pasta do seu projeto e, em seguida, Novo → Arquivo Python. Ok, vamos começar a escrever código. Importe a biblioteca de telebot usando:

 import telebot 

Agora você precisa criar a variável bot. Na verdade, o nome da variável pode ser qualquer coisa, mas estou acostumado a escrever bot.

 bot = telebot.TeleBot(' ') 

Escreveremos o decorador bot .message_handler (), com o qual nosso bot responderá ao comando / start. Para fazer isso, escrevemos command = ['start'] entre parênteses. Como resultado, devemos obter o seguinte:

 @bot.message_handler(commands=['start']) 

Se você tentar iniciar seu bot (RMB-> Executar), nada funcionará para você. Primeiro, no final do código, precisamos escrever bot.polling (). Isso é necessário para que o bot não desligue imediatamente, mas funcione e verifica se há uma nova mensagem no servidor. E segundo, nosso bot, mesmo que procure mensagens, ainda não será capaz de responder a nada. É hora de consertar! Após nosso decorador, criamos a função start_message, que aceita o parâmetro message (o nome da função pode ser qualquer coisa). Em seguida, vamos implementar o envio de mensagens do próprio bot. Na função, escrevemos bot.send_message (message.chat.id, 'Olá, você me escreveu / start'). Veja o que você deve obter:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') bot.polling() 

Vamos verificar ...

imagem

Ótimo, nosso bot funciona! Para que ele responda não apenas aos comandos, mas também às mensagens, crie um novo bot decorador .message_handler () e entre parênteses escreva content_types = ['text']. Em geral, existem muitos tipos de conteúdo, por exemplo, localização, foto, áudio, adesivo etc. Mas precisamos responder ao texto, certo? Portanto, criamos uma função send_text que aceita um parâmetro de mensagem. Na função, escrevemos a condição:

 @bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ',  ') elif message.text == '': bot.send_message(message.chat.id, ', ') 

Se o texto da mensagem for "Olá", o bot responderá "Olá, meu criador" e, se o texto da mensagem for "Tchau", o bot responderá "Adeus, criador". Aqui eu acho que está tudo claro. Mas você provavelmente se perguntou, e se o usuário escreve "olá" ou "Olá", o que você deve fazer nessa situação? Tudo é bem simples! Na condição, após o message.text, escreva a função .lower () e, no texto, substitua todas as letras maiúsculas por minúsculas. Agora, nosso bot responde não apenas ao “olá”, mas também ao “PrivT” e até ao “PRIVET”.

imagem

Aqui está o que você deve obter:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling() 

Bem, descobrimos o texto, mas como enviar um adesivo, por exemplo? Tudo é simples! Cada adesivo possui seu próprio ID, respectivamente, sabendo o ID, podemos enviá-lo. Existem duas maneiras de obter o ID do adesivo. O primeiro (simples) - através do bot especial "Qual é o ID do adesivo?"

imagem

Bem, a segunda maneira, para aqueles que não estão procurando maneiras fáceis. Criamos um novo decorador bot .message_handler (), somente entre parênteses escrevemos content_types = ['sticker']. Então tudo está como sempre. Criamos uma função que aceita o parâmetro message, mas aqui escrevemos print (message). Nós lançamos o bot.



Olha, assim que enviei o adesivo, ele imediatamente exibiu informações no console e, no final, será a nossa identificação de adesivo (file_id). Vamos garantir que, quando o usuário enviar o bot "Eu te amo", o bot responda com um adesivo. Não há necessidade de criar um novo decorador, apenas adicionamos a condição anterior. Mas, em vez de bot.send_message (), escrevemos bot.send_sticker () e, em vez do texto, escrevemos o ID do adesivo.

imagem

Parabéns, tudo deu certo! Estou pensando em como enviar áudio, fotos e geolocalização, você vai descobrir por si mesmo. Quero mostrar como fazer um teclado que o bot mostrará na inicialização. Isso tornará mais difícil. Criamos a variável keyboard1, na qual escrevemos telebot.types.ReplyKeyboardMarkup (). Esta função chama o teclado. Em seguida, crie as linhas, mas lembre-se de que não pode haver mais de 12 linhas! Para criá-los, escreva keyboard1.row (). Entre parênteses, escreva o que quiser; pessoalmente, escreverei "Olá" e "Tchau". Agora, para chamar o teclado, vamos adicionar reply_markup = keyboard1 à função de enviar uma mensagem na inicialização. Aqui está o que você deve obter:

 keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) 

Lançamos o bot ...



Você vê que o teclado é meio grande. Para corrigir isso, você só precisa registrar True em ReplyKeyboardMarkup (). Bem, se você deseja que o teclado oculte assim que o usuário clica nele, escreva outro True. Você pode ler mais sobre o que esses True significam na documentação oficial .

 keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) 

Bem, isso é tudo! É claro que nem todos os bots são possíveis em telegrama, mas eu mostrei as principais características. Obrigado pela atenção.

Código fonte:

 import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '  ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling() 


Se você tiver alguma dúvida - você pode escrever para o telegrama dimagorovtsov

Source: https://habr.com/ru/post/pt448310/


All Articles