# Sistema de leitura, deduplicação e repost com link de afiliado

Documento gerado a partir da discussão sobre viabilidade e arquitetura do sistema que lê grupos no Telegram e WhatsApp, extrai links do Mercado Livre, converte para link de afiliado e republica em destinos definidos.

---

## 1. Visão geral do fluxo

- **Fontes (leitura):** grupos/canais do Telegram (fornecidos pelo usuário) + grupos do WhatsApp (onde o usuário entra com seus chips).
- **Processamento:** extrair links do Mercado Livre → eliminar duplicados → aplicar ID de afiliado configurado no sistema.
- **Destinos (publicação):** 1 grupo no Telegram + 1 ou mais grupos no WhatsApp (grupo 1, 2, 3… conforme enchem).

O mesmo chip no WhatsApp **lê** nos grupos em que é membro e **publica** nos grupos em que o usuário é administrador.

---

## 2. Telegram

### 2.1 Ler postagens de canal/grupo sem ser admin

- **Viável:** sim, usando API de **cliente** (conta de usuário), não Bot API.
- **Bot:** não consegue ler mensagens de um canal só pelo link; só vê o que acontece em grupos/canais onde foi adicionado.
- **API de cliente:** com **Telethon** ou **Pyrogram** (Python) ou **MadelineProto** (PHP) e sua conta (número de telefone), é possível entrar em canal público e ler o histórico.

### 2.2 Compatibilidade com Laravel

- **Telethon/Pyrogram:** são em Python; Laravel é PHP. Não rodam no mesmo processo. Dá para usar como serviço separado (Laravel chama via HTTP, fila, processo ou banco).
- **Tudo em PHP:** usar **MadelineProto** (PHP) para a parte Telegram: login com conta, ler canais/grupos, enviar mensagens. Integra no mesmo projeto Laravel (comando Artisan, job, etc.).

### 2.3 Papel no sistema

- Usuário **fornece** os grupos/canais do Telegram (links).
- Sistema **lê** desses grupos/canais e extrai links do Mercado Livre (além dos do WhatsApp).

---

## 3. WhatsApp

### 3.1 Ler grupos em que é membro (sem ser admin)

- **Só com API oficial:** não. A API oficial (WhatsApp Business API) não cobre o uso "ler qualquer grupo em que sou membro".
- **Com API não oficial:** sim (ex.: Evolution API, Baileys, whatsapp-web.js), mas viola termos de uso e há risco real de **bloqueio e perda do número**. Com chip novo o risco é maior.
- **Recomendação:** não usar API não oficial para não arriscar perder o número.

### 3.2 Uso com API oficial (chip + grupos)

- **Fluxo:** chip registrado como **WhatsApp Business** e cadastrado na **API oficial** (Meta/BSP). O mesmo número entra nos grupos (por **link de convite** ou sendo adicionado). A API recebe as mensagens desses grupos.
- **Quem adiciona:** se o grupo tiver link de convite, o usuário **entra sozinho** pelo link; não depende de admin.
- **Postar:** o mesmo chip pode **publicar** nos grupos em que o usuário é **admin** (grupo 1, 2, 3…). Ou seja: o chip **lê** nos grupos em que é membro e **postar** nos grupos do usuário.

### 3.3 Chip novo e números internacionais

- Converter chip novo para WhatsApp Business e usá-lo na API oficial é **viável**; a parte sensível é a **aprovação** da API (verificação de negócio, etc.).
- Comprar número internacional é um caminho que muita gente usa; o número deve ser "sério" e você deve ter direito legítimo a ele (evitar números descartáveis ou revendidos).

### 3.4 Vários números (robustez)

- Usar **vários chips** torna o sistema mais robusto: redundância, distribuição de limites da API e de grupos.
- Cada chip pode ser cadastrado em **até X grupos** do WhatsApp (X configurável). Para ler de mais grupos, usa-se outro chip.
- **Backend único:** recebe mensagens de todos os números, deduplica links e publica nos destinos (Telegram + grupos WhatsApp do usuário).

---

## 4. Arquitetura de destinos

- **Um grupo no Telegram:** onde o sistema publica (links com afiliado).
- **Um ou mais grupos no WhatsApp:** grupos do usuário onde ele é **admin** (grupo 1, 2, 3…). Quando um grupo enche (limite de membros), cria-se o próximo. Os **chips** usados para ler também **publicam** nesses grupos.

Resumo: **ler de muitos** (Telegram + WhatsApp), **publicar em 1 Telegram + N grupos WhatsApp (do usuário)**.

---

## 5. Limite por chip no WhatsApp

- Cada chip fica em **no máximo X grupos** do WhatsApp (X definido no sistema).
- Esses X grupos são os que o chip **lê**. Os grupos onde o chip **postar** são outros (os do usuário, onde ele é admin).
- Ao precisar ler de mais grupos, usa-se outro chip (chip 2, 3…), cada um em até X grupos.

---

## 6. Multi-tenant (venda de acesso)

No futuro o sistema pode **vender acesso**:

- **Uma conta por cliente** (usuário X).
- **Por conta:**
  - Grupos do **Telegram** que o usuário informa (fontes).
  - Um ou mais **chips** só daquele usuário (para ler e postar no WhatsApp).
  - **ID de afiliado** (por conta).
  - **Destinos:** 1 grupo Telegram + 1 ou mais grupos WhatsApp onde o usuário é admin.
- O fluxo é o mesmo: ler Telegram + WhatsApp → deduplicar → afiliado → publicar no Telegram dele + nos grupos WhatsApp dele.
- Cada conta fica isolada (seus grupos, seus chips, seus destinos).

---

## 7. Resumo em tabela

| Item | Seu uso | Multi-tenant (usuário X) |
|------|---------|---------------------------|
| Fontes Telegram | Grupos que você informa | Grupos que o usuário X informa |
| Fontes WhatsApp | Grupos em que seus chips entram (até X por chip) | Grupos em que os chips do usuário X entram |
| Chips WhatsApp | Leem + publicam nos seus grupos (onde você é admin) | Leem + publicam nos grupos do usuário X (onde ele é admin) |
| Limite por chip | Até X grupos (configurável) | Mesmo limite X |
| Afiliado | ID configurado no sistema | Por conta (ID do usuário X) |
| Destino Telegram | 1 grupo seu | 1 grupo do usuário X |
| Destino WhatsApp | Grupo 1, 2, 3… (seus, você é admin) | Grupo(s) do usuário X |

---

## 8. Pontos técnicos a considerar

1. **Telegram (leitura):** API de cliente (ex.: MadelineProto em PHP) para ler dos grupos/canais informados.
2. **WhatsApp:** API oficial; cada número lê dos grupos em que está e posta nos grupos em que o usuário é admin.
3. **Deduplicação:** base única por conta (ou global) de "links já processados" para não repetir oferta.
4. **Multi-tenant:** isolamento por conta (fontes, chips, destinos, afiliado); preparar para billing por conta no futuro.
