Skip to content

Crie seu próprio bot personalizado e comece a interagir com os usuários no Telegram de maneira única e criativa. Seja para fins de automação, entretenimento ou utilidade, este repositório é o seu ponto de partida para dominar o desenvolvimento de bots com Python para o Telegram.

License

Notifications You must be signed in to change notification settings

Renatoelho/criando-bots-telegram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bot Telegram

Fluxo de Desenvolvimento - Bot Telegram

Obs.: Este repositório é apenas para fins educacionais e não deve ser usado em ambientes produtivos, pois isso pode levar a problemas de segurança, estabilidade e desempenho.

Requisitos para implementação

  • Ubuntu 20.04 (Host)

  • Docker 23.0.3 (Host)

  • Docker-Compose 1.25.0 (Host)

  • Git 2.25.1 ou superior (Host)

  • Python 3.8 ou superior (contêiner)

  • Apache Nifi 1.19.0 (contêiner)

  • MySQL 5.7.40 (contêiner)

  • Redis 7.0.10 (contêiner)

Obs.: Importante ter 8 GB de RAM ou mais para essa implementação.

Passos da implementação

Passo 0 - Clonar o repositório do projeto para sua máquina

git clone https://github.com/Renatoelho/criando-bots-telegram.git "criando-bots-telegram"

Obs.: Escolha um diretório em que você tenha permissões de leitura, escrita e execução completas.

Passo 1 - Criando um bot no Telegram

  • Abra o Telegram e pesquise por "BotFather".

  • Inicie uma conversa com o BotFather e envie o comando "/newbot".

  • Siga as instruções do BotFather para dar um nome e um username ao seu bot.

  • O BotFather irá gerar uma API token para o seu bot. Anote essa chave, pois ela será necessária para conectar seu bot ao Telegram.

Lembre-se de que existem diversas funcionalidades que podem ser adicionadas ao seu bot, como respostas automáticas, integração com outras plataformas, criação de comandos personalizados, entre outras.

Passo 2 - Criando o Token do ChatGPT

  • Acesse o site da OpenAI (https://openai.com/) e crie uma conta.

  • Após criar sua conta, acesse a página de gerenciamento de API Keys (https://beta.openai.com/docs/api-reference/authentication).

  • Clique no botão "Create new API key" para gerar uma nova chave.

  • Você precisará fornecer um nome descritivo para a chave que está criando.

  • Após criar sua chave, você poderá visualizá-la e gerenciá-la na página de gerenciamento de API Keys.

Importante ressaltar que cada modelo da OpenAI tem suas próprias diretrizes e restrições de uso, e você deve seguir as políticas de uso aceitável para cada modelo.

Passo 3 - Atualize o arquivo de parâmetros

Acesse o arquivo '.env' e atualize com os Tokens criados.

TOKEN_TELEGRAM=<Seu Token do Bot Telegram>
TOKEN_CHATGPT3=<Seu Token do ChatGPT>

Passo 4 - Criando a imagem Docker para o Bot Telegram

cd criando-bots-telegram/bot01
docker build -f dockerfile -t bot-app:0.0.1 .

Passo 5 - Criando volumes e configurando permissões para aplicação Bot Telegram

  • Criando o volume do Bot Telegram
docker volume create --name=bot-dados-telebot
docker volume create --name=bot-dados-mysql
  • Alterando as permissões de acesso ao diretório do volume 'bot-dados-telebot'
sudo chmod 766 /var/lib/docker/volumes/bot-dados-telebot/_data

Obs.: Como o volume 'bot-dados-telebot' será compartilhado entre o contêiner com aplicação em Python e o contêiner com o Apache Nifi, foi necessário alterar as permissões de leitura e escrita para que ambos tenham acesso adequado.

Passo 6 - UP dos Serviços via Docker-Compose

cd criando-bots-telegram/
docker-compose -f docker-compose.yaml --compatibility up -d && docker cp bot01/deploy/mysql-connector-j-8.0.31.jar bot-nifi:/home/nifi

UP dos Serviços via Docker-Compose

Obs.: O Driver JDBC que será utilizado no Apache Nifi será enviado para o contêiner através do comando 'docker cp...', não sendo a melhor maneira, mas sim a mais prática.

Passo 7 - Configurações Finais - Apache Nifi

Para configurar o fluxo do Apache Nifi que captura as interações dos usuários com o bot e, em seguida, grava no banco de dados, os seguintes passos devem ser executados:

Obs.: usuário e senha do Apache Nifi estão no arquivo 'docke-compose.yaml'

  • Importe o Flow existente na pasta 'deploy' como um novo template.

Obs.: arquivo 'FLOW_CAPTURA_INTERACOES_BOT_TELEGRAM_....xml'

  • Adicione a senha do MySQL no controle service: 'Servidor MySQL - Central'

Obs.: senha do MySQL está no arquivo 'docke-compose.yaml'

  • Ative todo o Flow clicando em 'Start'.

Flow Apache Nifi

Flow Apache Nifi Parte 1

Flow Apache Nifi Parte 2

Resultado da Implementação

O bot foi implementado com 5 comandos, cada um com 2 possíveis respostas. Além disso, ele é capaz de interpretar o significado das interações, identificando se é uma saudação ou uma pergunta. Para essa funcionalidade, estamos utilizando a API da OpenAI (ChatGPT). Para evitar respostas repetitivas, todas as interações são armazenadas no Redis por um período de 24 horas.

Interação bot

Os comandos são customizáveis e é possível adicionar novos, além de expandir a interpretação das interações para outras possibilidades.

Down dos Serviços via Docker-Compose

docker-compose -f docker-compose.yaml --compatibility down

Down dos Serviços via Docker-Compose

Considerações Finais

Ao final deste processo, você terá criado uma aplicação estruturada que utiliza as principais tecnologias e ferramentas existentes atualmente. Embora este seja um ambiente não produtivo, é válido para você entender como é feita a implementação e orquestração de tantas soluções para serem executadas em conjunto em busca de um determinado propósito.

Referências:

Python, python.org. Disponível em: https://www.python.org/. Acesso em: 6 abril de 2023.

Telebot, KyleJamesWalker. Disponível em: https://github.com/KyleJamesWalker/telebot. Acesso em: 7 abril de 2023.

Telebot, Pypi.org. Disponível em: https://pypi.org/project/telebot/. Acesso em: 6 abril de 2023.

Install Docker Engine on Ubuntu, Docker Docs. Disponível em: https://docs.docker.com/engine/install/ubuntu/. Acesso em: 9 abril de 2023.

Docker Compose overview, Docker Docs. Disponível em: https://docs.docker.com/compose/. Acesso em: 6 abril de 2023.

Introduction, OpenAI. Disponível em: https://platform.openai.com/docs/api-reference. Acesso em: 5 abril de 2023.

Apache NiFi Overview, Apache Nifi. Disponível em: https://nifi.apache.org/docs.html. Acesso em: 6 abril de 2023.

Apache Nifi, Docker Hub. Disponível em: https://hub.docker.com/r/apache/nifi. Acesso em: 6 abril de 2023.

redis-py - Python Client for Redis, Redis. Disponível em: https://redis-py.readthedocs.io/en/stable/index.html. Acesso em: 6 abril de 2023.

Redis, Docker Hub. Disponível em: https://hub.docker.com/_/redis. Acesso em: 6 abril de 2023.

MySQL, MySQL. Disponível em: https://www.mysql.com/. Acesso em: 6 abril de 2023.

MySQL, Docker Hub. Disponível em: https://hub.docker.com/_/mysql. Acesso em: 6 abril de 2023.

About

Crie seu próprio bot personalizado e comece a interagir com os usuários no Telegram de maneira única e criativa. Seja para fins de automação, entretenimento ou utilidade, este repositório é o seu ponto de partida para dominar o desenvolvimento de bots com Python para o Telegram.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages