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.
-
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.
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.
-
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.
-
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.
Acesse o arquivo '.env' e atualize com os Tokens criados.
TOKEN_TELEGRAM=<Seu Token do Bot Telegram>
TOKEN_CHATGPT3=<Seu Token do ChatGPT>
cd criando-bots-telegram/bot01
docker build -f dockerfile -t bot-app:0.0.1 .
- 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.
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
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.
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:
- Acesse via navegador o endereço: https://localhost:8443/nifi/
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'.
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.
Os comandos são customizáveis e é possível adicionar novos, além de expandir a interpretação das interações para outras possibilidades.
docker-compose -f docker-compose.yaml --compatibility down
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.
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.