https://github.com/renatoelho/criando-bots-telegram
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.
https://github.com/renatoelho/criando-bots-telegram
bots chatgpt docker docker-compose mysql nifi python redis telegram
Last synced: 4 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/renatoelho/criando-bots-telegram
- Owner: Renatoelho
- License: mit
- Created: 2023-04-10T11:02:59.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-04-15T08:12:42.000Z (over 2 years ago)
- Last Synced: 2025-05-12T22:51:58.167Z (5 months ago)
- Topics: bots, chatgpt, docker, docker-compose, mysql, nifi, python, redis, telegram
- Language: Python
- Homepage: https://renato.tec.br/
- Size: 4.41 MB
- Stars: 6
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```bash
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.
```text
TOKEN_TELEGRAM=
TOKEN_CHATGPT3=
```#### Passo 4 - Criando a imagem Docker para o Bot Telegram
```bash
cd criando-bots-telegram/bot01
``````bash
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
```bash
docker volume create --name=bot-dados-telebot
``````bash
docker volume create --name=bot-dados-mysql
```- Alterando as permissões de acesso ao diretório do volume 'bot-dados-telebot'
```bash
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
```bash
cd criando-bots-telegram/
``````bash
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.
#### 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:
- 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'***.
#### Flow Apache Nifi


# 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.

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
```bash
docker-compose -f docker-compose.yaml --compatibility down
```
# 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: . Acesso em: 6 abril de 2023.
Telebot, **KyleJamesWalker**. Disponível em: . Acesso em: 7 abril de 2023.
Telebot, **Pypi.org**. Disponível em: . Acesso em: 6 abril de 2023.
Install Docker Engine on Ubuntu, **Docker Docs**. Disponível em: . Acesso em: 9 abril de 2023.
Docker Compose overview, **Docker Docs**. Disponível em: . Acesso em: 6 abril de 2023.
Introduction, **OpenAI**. Disponível em: . Acesso em: 5 abril de 2023.
Apache NiFi Overview, **Apache Nifi**. Disponível em: . Acesso em: 6 abril de 2023.
Apache Nifi, **Docker Hub**. Disponível em: . Acesso em: 6 abril de 2023.
redis-py - Python Client for Redis, **Redis**. Disponível em: . Acesso em: 6 abril de 2023.
Redis, **Docker Hub**. Disponível em: . Acesso em: 6 abril de 2023.
MySQL, **MySQL**. Disponível em: . Acesso em: 6 abril de 2023.
MySQL, **Docker Hub**. Disponível em: . Acesso em: 6 abril de 2023.