Como criar um bot no telegram – chatbot DO ZERO

Como criar um bot no telegram

Por que ficar respondendo as mesmas coisas sempre? Deixe um bot fazer isso por você! Nesta postagem irei te ensinar como criar um bot no Telegram, ou seja como criar um chatbot do zero!(postagem ainda em construção)

O plano é criar um bot do zero usando o Python.

Pronto para automatizar isso? Vamos automatizar TUDO!

Pré-requisitos

Conta no telegram

Assim como como outro bot que já ensinei em uma postagem anterior, de “Como Criar um bot no WhatsApp”, temos que, antes de tudo, você precisa de uma conta no telegram. Se ainda não possui uma crie ela antes de realizar este tutorial, e depois navegue até https://web.telegram.org/ e se autentique no telegram web, iremos usar ele neste tutorial.

Após ter logado no telegram web, busque por Botfather no chat e clique nele

Telegram “Botfather”

Após ter clicado no BotFather, iremos usar ele para criar nosso novo bot. O BotFather é o Bot “Pai” responsável criado pela equipe do Telegram para criar todos os outros bots. Então para que você crie seu bot, aperte em /iniciar ou /start para começar o processo.

Após ter clicado em start, verá as seguintes opções:

Selecione a opção /newbot

Digite um nome para o seu bot e aperte enter

Agora digite um apelido para o seu bot(o apelido precisa finalizar com a palavra bot). Caso você digite um apelido já criado anteriormente, você receberá a seguinte mensangem:

Neste caso, tudo que você precisa fazer, é criar um nome único, feito isso você receberá uma mensangem de confirmação como a seguir. Tome nota das informações destacadas na imagem a seguir.

Agora é a hora de codar o nosso bot do zero

Conta no Repl.it

Para criar um bot, precisamos nos comunicar com o API do Telegram.

Entre no https://repl.it/ e crie uma conta

Após ter criado sua conta no https://repl.it/ e fazer o login você deve chegar a está página, onde você deve clicar no “+” para criar um novo projeto

Na janela que irá aparecer, selecione a linguagem de programação Python e dê um nome para seu projeto

Feito isso, sua tela deve estar assim:

Eu pessoalmente acho o tema escuro mais estéticamente interessante, então estarei alterano para ele

como receber mensagens

Nosso ambiente de desenvolvimento está pronto agora. Então a lógico por trás de um bot no telegram é a seguinte:

  1. Monitoro todas mensagens enviados ao meu bot
  2. Verifico as mensagens que estão chegando
  3. Respondo as mensagens de acordo com o que quero

Como monitorar mensagens enviadas

Para monitar as mensagensque estão chegando para o seu bot, podemos fazer uma requisição para https://api.telegram.org/bot{token}/getUpdates, substituindo {token} pelo token gerado dentro do botfather. Caso não se lembre, estou falando deste token aqui:

Vamos montar um pequeno código de teste que irá monitar a cada 10 segundos se o nosso bot está ou não recebendo novas mensagens.

Coloque o seguinte código no repl.it e altere a linha onde é inserido o token com o token que você anotou quando criou o bot, usando o BotFather

import requests
import time

while True:
    token = '1398883505:AAFmdmUTisAQ4Fkd-qw_kuI7fiGNrrrYryg'
    # Ler mensagens
    url_base = f'https://api.telegram.org/bot{token}/getUpdates'
    resultado = requests.get(url_base)
    # Imprimir Resultados
    print(resultado.json())
    time.sleep(10)

Aperte o PLAY(Botão verde) e agora o seu bot deve estar online.

Você pode confirmar isso navegando até o link do bot que foi gerado pelo botfather e clicando em /start ou /iniciar e depois enviando uma nova mensagem

Se tudo ocorreu corretamente, você deve ver a mensagem que seu bot recebeu, dentro do repl.it

Se isso funcionou, agora podemos então criar uma estrutura própria para o nosso bot, onde ele será capaz de:

  • Obter novas mensagens
  • Criar uma resposta personalizada
  • Enviar a resposta adequada, automaticamente

Iremos partir usando a estrutura a seguir

class TelegramBot:
    def __init__(self):
        token = '1374813849:AAHauYQ2ikM4E-fTYOsZDNFZ-uOf39TecEM'
        url_base = f'https://api.telegram.org/bot{token}/getUpdates?timeout=100'
    # Obter mensagens
    # Criar uma resposta
    # Enviar Mensangem(responder)

Como obter novas mensagens

# Explain OS import 
# Explain logic to get check if first message
import requests
import time
import json
import os


class TelegramBot:
    def __init__(self):
        token = '1374813849:AAHauYQ2ikM4E-fTYOsZDNFZ-uOf39TecEM'
        self.url_base = f'https://api.telegram.org/bot{token}/'

    def Iniciar(self):
        update_id = None
        while True:
            atualizacao = self.obter_novas_mensagens(update_id)
            dados = atualizacao["result"]
            if dados:
                for dado in dados:
                    update_id = dado['update_id']
                    mensagem = str(dado["message"]["text"])
                    chat_id = dado["message"]["from"]["id"]
                    eh_primeira_mensagem = int(
                        dado["message"]["message_id"]) == 1
                    resposta = self.criar_resposta(
                        mensagem, eh_primeira_mensagem)
                    self.responder(resposta, chat_id)

    # Obter mensagens
    def obter_novas_mensagens(self, update_id):
        link_requisicao = f'{self.url_base}getUpdates?timeout=100'
        if update_id:
            link_requisicao = f'{link_requisicao}&offset={update_id + 1}'
        resultado = requests.get(link_requisicao)
        return json.loads(resultado.content)

bot = TelegramBot()
bot.Iniciar()

Como criar um resposta

import requests
import time
import json
import os


class TelegramBot:
    def __init__(self):
        token = '1374813849:AAHauYQ2ikM4E-fTYOsZDNFZ-uOf39TecEM'
        self.url_base = f'https://api.telegram.org/bot{token}/'

    def Iniciar(self):
        update_id = None
        while True:
            atualizacao = self.obter_novas_mensagens(update_id)
            dados = atualizacao["result"]
            if dados:
                for dado in dados:
                    update_id = dado['update_id']
                    mensagem = str(dado["message"]["text"])
                    chat_id = dado["message"]["from"]["id"]
                    eh_primeira_mensagem = int(
                        dado["message"]["message_id"]) == 1
                    resposta = self.criar_resposta(
                        mensagem, eh_primeira_mensagem)
                    self.responder(resposta, chat_id)

    # Obter mensagens
    def obter_novas_mensagens(self, update_id):
        link_requisicao = f'{self.url_base}getUpdates?timeout=100'
        if update_id:
            link_requisicao = f'{link_requisicao}&offset={update_id + 1}'
        resultado = requests.get(link_requisicao)
        return json.loads(resultado.content)

    # Criar uma resposta
    def criar_resposta(self, mensagem, eh_primeira_mensagem):
        if eh_primeira_mensagem == True or mensagem in ('menu', 'Menu'):
            return f'''Olá bem vindo a nossa lanchonete Digite o número do hamburguer gostaria de pedir:{os.linesep}1 - Queijo MAX{os.linesep}2 - Duplo Burguer Bacon{os.linesep}3 - Triple XXX'''
        if mensagem == '1':
            return f'''Queijo MAX - R$20,00{os.linesep}Confirmar pedido?(s/n)
            '''
        elif mensagem == '2':
            return f'''Duplo Burguer Bacon - R$25,00{os.linesep}Confirmar pedido?(s/n)
            '''
        elif mensagem == '3':
            return f'''Triple XXX - R$30,00{os.linesep}Confirmar pedido?(s/n)'''

        elif mensagem.lower() in ('s', 'sim'):
            return ''' Pedido Confirmado! '''
        elif mensagem.lower() in ('n', 'não'):
            return ''' Pedido Confirmado! '''
        else:
            return 'Gostaria de acessar o menu? Digite "menu"'

    # Responder
    def responder(self, resposta, chat_id):
        link_requisicao = f'{self.url_base}sendMessage?chat_id={chat_id}&text={resposta}'
        requests.get(link_requisicao)


bot = TelegramBot()
bot.Iniciar()

considerações finais

Acabamos de ver muitas coisas novas hoje, e caso você ainda não tenha conhecimento de programação em Python, API’s e automação. Tudo pode ter parecido tudo muito complexo ou desconexo, mas lembre-se o processo de aprendizado é assim mesmo, inicialmente com a curiosidade e exploração, gradualmente vamos adquirindo conhecimento.

Como se tornar um mestre da automação

  • Criar robôs que trabalham por você?
  • Usar a programação ao seu favor?
  • Economizar dezenas de horas?
  • Monetizar seu conhecimento?

É exatamente isso que ensino no curso Mestres da Automação, saiba mais clicando aqui.

Prefere assistir vídeo? Veja a explicação completa no vídeo abaixo:

.

Marcações:

11 comentários em “Como criar um bot no telegram – chatbot DO ZERO”

  1. Que show!
    Obrigado!
    Aqui deu quase tudo certo, recebeu as mensagens em tempo real.

    Mas porque o bot não respondeu aos comandos?

    1. na verdade, agora o erro é esse:

      Traceback (most recent call last):
      File “main.py”, line 63, in
      bot.Iniciar()
      File “main.py”, line 20, in Iniciar
      mensagem = str(dado[“message”][“text”])
      KeyError: ‘text’

  2. Fábio Coutinho

    Jhonatan fiz o seu BOT e ele está funcionando. Quando o coloquei no meu grupo qualquer pessoa que pergunta o BOT só responde no grupo do BOT ao invés de responder no grupo onde o coloquei. Pode me ajudar nessa?

  3. Boa noite!
    Estou com uma pequena duvida eu criei o bot para telegram porem como faço para este mesmo bo gerenciar um grupo como faço essa integração alguem pode me ajuda?

  4. Comigo aconteceu esse mesmo erro, para resolver fiz isso:
    Nessa linha abaixo:
    self.url_base = f’api.telegram.org/bot{token}/’

    Altera para:
    self.url_base = f’https://api.telegram.org/bot{token}/’

  5. Cara, muito bom o tutorial. Muito fácil de entender tudo pela maneira didática e seguindo etapas como tu explicas.
    Estou adaptando aqui à minha necessidade.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *