E ae EnzoVilas
beleza? Um tempo atrás fiz umas compras na China e queria um bot pra rastrear essas encomendas, mas a transportadora não tinha integração com lugar nenhum.
Fiz uma engenharia reversa na API deles e consegui criar um bot super simples pra acompanhar minhas encomendas: https://github.com/Tashima42/telegram-tracking-orders-bot
Se eu puder dar uma dica, é: use uma biblioteca. A API do telegram é super completa e por isso um pouquinho complexa, usando uma biblioteca muita coisa fica super simples.
Estou fazendo de maneira "porca", por assim dizer, bem chutado sem estudar nada e fazendo gambiarras onde poço, o objetivo é primeiro ver funcionando e depois ir modelando.
Atualmente já criei o Webhook e estou respondendo os comandos de imediato, atualmente somente respostas pré-definidas, nem mesmo entrei em contato com a API do tabnews ainda, estou tendo um problema com a minha função para cadastro na tabela.
(print do codigo : https://prnt.sc/9D_PFF21vF8E)
Quando rodo a função junto ao comando "Acompanhar" ele nem mesmo me retorna a resposta do sendMessage, não sei oque causa isso minha função tem um código para gerar log, mas não está sendo gerado por algum motivo.
Talvez seja algo que esteja obvio para alguém experiente, mas ainda me considero um "júnior" e como mencionei antes isso é apenas para aprendizado então enquanto eu estiver quebrando a cabeça estou aprendendo.
Não tenho ideia de como te ajudar com esse bug diretamente, mas uma recomendação geral pra quando você for desenvolver, é tentar deixar o código um pouco menos aninhado.
Isso aqui é um exemplo de um código aninhado:
function sendMessage(message) {
if(message.text === "/start") {
if(message.user.name) {
sendGreeting(message.user.name)
} else if (message.user.id) {
addToSubscribedList(message.user.id)
} else {
if(message.sent === false) {
addToMessageRetry(message)
}
}
}
}
Em vez de colocar um monte de ifs um dentro do outro, usar funcoes mais especificas e evitar deixar o corpo delas muito grande.
function sendMessage() {
sendGreeting()
addToSubscribedList()
addToMessageRetry()
}
Obviamente esse não é um caso real, mas a ideia é que o código vai ficar mais limpo, mais legível e vai ser mais fácil pra você encontrar bugs.
Não me recordo agora em qual curso na internet ouvi sobre isso, a algum tempo quando ainda estava aprendendo a programar o programador do curso que eu estava assistindo mencionou um princípio para programadores em inglês algo como "mantenha simples estúpido". No início achei algo idiota, mas com o tempo e conforme ia programando entendi, quanto mais simples o código for mais simples o trabalho sera, sem ficar "enchendo linguiça", por assim dizer, acredito que falhei em seguir esse principio.
Vou procurar melhorar nesse quesito, adorei o conselho, novamente como eu disse antes o objetivo aqui e aprender e adquirir o máximo de conhecimento e experiencia possível.
esse é o principio KISS:
"KISS is an acronym which means Keep It Simple Stupid. I don't like to use the word Stupid because I know my readers aren't stupid, that’s why I choose to translate it to Keep It Super Simple."
https://dev.to/kwereutosu/the-k-i-s-s-principle-in-programming-1jfg