Primeiro, sobre a questão do nome e menções. Você está absolutamente correto. Para evitar problemas, podemos usar uma abordagem descritiva e clara:
- Nome do Projeto:
GramCLI,Termogram,TeleTerm, ou algo que remeta à ideia ("gram" = telegram, "CLI" = linha de comando, "Term" = terminal) sem usar a marca registrada "Telegram" diretamente. - Descrição: Use termos como "cliente de terminal para a plataforma de mensagens Telegram" ou "cliente não-oficial de linha de comando para a API do Telegram". Isso faz a menção necessária para que todos entendam do que se trata, sem infringir marcas.
Baseado nos seus requisitos (moderna, estável, comunidade ativa, leve, fácil manutenção/adação/documentação), minha forte recomendação é Go (Golang).
- Por quê?
- Binário Único e Multiplataforma: Go compila para um único binário estático, sem dependências externas. Isso é PERFEITO para seu projeto. Um comando de compilação gera binários nativos para Linux (amd64, arm, arch), macOS, Android (via terminal), etc.
- Desempenho e Leveza: Binários nativos são extremamente rápidos e consomem poucos recursos, ideal para usuários de terminal.
- Concorrência Facilidade: A API do Telegram é baseada em eventos (novas mensagens, etc.). A concorrência primitiva do Go (goroutines e channels) é a melhor ferramenta para lidar com isso de forma elegante e eficiente.
- Comunidade Ativa e Ecossistema: Go tem uma comunidade enorme e ativa, com bibliotecas de alta qualidade para quase tudo, incluindo APIs do Telegram.
- Facilidade de Manutenção e Documentação: A sintaxe de Go é minimalista e direta. O código é fácil de ler, manter e documentar. A ferramentagem (
go fmt,go doc) é excelente. - Estabilidade: A linguagem e sua biblioteca padrão são muito estáveis, garantindo que seu projeto não quebre com atualizações.
Alternativa Consistente: Rust. Também gera binários eficientes e é excelente, mas a curva de aprendizado é mais acentuada e o foco em segurança de memória, embora fantástico, pode ser "excesso" para este projeto específico. Go oferece um caminho mais direto para a produtividade.
Aqui está uma proposta de requisitos para guiar o desenvolvimento.
-
Autenticação:
- RF01: O sistema deve permitir login via número de telefone e código de verificação.
- RF02: O sistema deve salvar a sessão de autenticação para logins futuros sem necessidade de reinserir o código.
-
Mensagens Pessoais:
- RF03: O sistema deve listar conversas recentes.
- RF04: O sistema deve permitir enviar mensagens de texto para um contato.
- RF05: O sistema deve permitir enviar arquivos (documentos, imagens) para um contato.
- RF06: O sistema deve exibir em tempo real novas mensagens recebidas.
-
Grupos e Canais:
- RF07: O sistema deve listar grupos e canais do usuário.
- RF08: O sistema deve permitir enviar mensagens para grupos e canais.
- RF09: O sistema deve exibir mensagens de grupos e canais em tempo real.
-
Interface e Interatividade:
- RF10: O sistema deve operar em modo interativo, com um prompt de comandos.
- RF11: O sistema deve oferecer um modo de comando único (e.g.,
gramcli --send @username "Hello World") para automação em scripts.
-
Utilitários:
- RF12: O sistema deve exibir uma lista de comandos disponíveis via comando
help.
- RF12: O sistema deve exibir uma lista de comandos disponíveis via comando
-
Usabilidade:
- RNF01: A interface deve ser intuitiva para usuários familiarizados com terminal.
- RNF02: O sistema deve fornecer feedback claro para todas as ações (sucesso, erro, carregamento).
-
Performance e Confiabilidade:
- RNF03: O sistema deve ser leve, consumindo menos de 50MB de RAM em idle.
- RNF04: O sistema deve ser responsivo, com latency inferior a 100ms para comandos locais.
- RNF05: O sistema deve se reconectar automaticamente em caso de queda de conexão.
-
Compatibilidade:
- RNF06: O sistema deve ser distribuído como binário único para as plataformas: Linux (amd64, armv7, aarch64), macOS (amd64, arm64 - Apple Silicon), e Android (termux, aarch64).
- RNF07: O sistema não deve requerer dependências externas para execução.
-
Manutenibilidade e Licenciamento:
- RNF08: O código-fonte deve ser aberto, preferencialmente sob licença MIT ou GPLv3.
- RNF09: O código deve ser bem documentado, com um
READMEclaro explicando como compilar, instalar e usar. - RNF10: O projeto deve usar uma biblioteca wrapper oficial da API do Telegram (como
MTProto) para garantir compatibilidade futura.
-
Fase 1 - Prova de Conceito (MVP):
- Configurar projeto em Go.
- Implementar autenticação (RF01, RF02).
- Implementar envio e recebimento de mensagens de texto em chats privados (RF04, RF06).
- Interface de linha de comando básica (RF10).
-
Fase 2 - Funcionalidades Essenciais:
- Implementar listagem de conversas (RF03, RF07).
- Adicionar suporte a envio de arquivos (RF05).
- Implementar suporte a grupos e canais (RF08, RF09).
- Criar o modo não-interativo para scripts (RF11).
-
Fase 3 - Polimento e Distribuição:
- Escrever documentação extensiva (RNF09).
- Criar scripts de build para gerar binários para todas as plataformas-alvo (RNF06).
- Implementar tratamento de erros robusto e reconexão automática (RNF05).
- Publicar o código no GitHub/GitLab com uma licença aberta.
Sua visão de tornar a tecnologia acessível é admirável. Com essa base, você está no caminho certo para criar uma ferramenta poderosa e amada pela comunidade de usuários de terminal. Boa sorte com o projeto