Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problemas com a chegada de mensagens - por favor me ajudem 😥 #321

Open
RamonAlves1357 opened this issue Mar 2, 2023 · 2 comments
Open

Comments

@RamonAlves1357
Copy link

Olá, bom dia meus amigos, primeiramente quero agradecer pelo projeto do UniversalTelegramBot, é muito interessante e estou gostando muito é bastante interessante.

Estou com alguns problemas em seu projeto. É o seguinte a uns 2 anos atrás eu usei seu projeto em um prototipo (https://github.com/RamonAlves1357/Iot-ESP8266-Telegram) em um ESP8266 NodeMCU e funcionou muito bem, mas agora retornei a usar (para fazer algo "fixo") só mudei a placa para um Wemos D1 R2 (Based Esp8266) e não funciona mais. Ele só consegue mandar informações para o bot do Telegram mas não consegue ler as mensagens. 😥

Segue em anexo o código:

#if defined(ESP8266)
  #include <ESP8266WiFi.h> // Biblioteca para funcionamento do WiFi do ESP
#else
  #include <WiFi.h> // Biblioteca para funcionamento do WiFi do ESP
#endif

#include <Arduino_JSON.h>
#include <SPI.h>

#include <WiFiClientSecure.h>
//#include <TelegramCertificate.h>
#include <UniversalTelegramBot.h>

// Informações de conexão WiFi
#define WIFI_SSID "Rede"
#define WIFI_PASSWORD "senha"

// Informações do Bot do Telegram
#define TELEGRAM_CERTIFICATE_ROOT "F2 AD 29 9C 34 48 DD 8D F4 CF 52 32 F6 57 33 68 2E 81 C1 90"
//const char TELEGRAM_CERTIFICATE_ROOT[] PROGMEM = "F2 AD 29 9C 34 48 DD 8D F4 CF 52 32 F6 57 33 68 2E 81 C1 90";
#define BOT_TOKEN "00000:XXXXXXXXXXXXXXXX"

// Ids dos usuários chefe.
String ID_Ramon = "ID_user";

uint32_t lastCheckTime = 0; // Tempo em que foi feita a última checagem
int Bot_mtbs = 500;
unsigned long runningTime = 0; // Para o Status de Tempo do IoT
String tipoTime; // Para o tipo de tempo da VAR anterior (segundo, minuto, hora)
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure client; //Cliente para conexões seguras
UniversalTelegramBot bot(BOT_TOKEN, client); //Objeto com os métodos para comunicarmos pelo Telegram

void setupWiFi()
{
  // Inicia em modo station e se conecta à rede WiFi
  //WiFi.mode(WIFI_STA);
  WiFi.mode(WIFI_AP_STA);
  WiFi.disconnect();
  delay(1000);
  Serial.println("Conectando à rede " + String(WIFI_SSID));
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  setupBot();
  
  while (WiFi.status() != WL_CONNECTED)
  {
    digitalWrite(LED_BUILTIN, LOW);
    delay(300);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(300);
    Serial.println("Conectando ao WiFi...");
  }
  delay(250);
  
  Serial.println();
  Serial.println("WiFi conectado!");
  Serial.print("IP da conexão: ");
  Serial.println(WiFi.localIP());
}

void setupBot() {
  //X509List cert(TELEGRAM_CERTIFICATE_ROOT);
  client.setFingerprint(TELEGRAM_CERTIFICATE_ROOT);
  delay(50);
  client.setTimeout(1000);
  delay(50);
  client.connect("api.telegram.org", 443);
  delay(50);
  client.setInsecure();
  delay(50);
  
  // Opa, tudo certo até agora.
  delay(500);

  while(!bot.sendMessage(ID_Ramon, "IoT no AR! Pronto para receber seus comandos.", "")) {}
}

void setup() {
  Serial.begin(115200); //Inicializa a comunicação Serial
  delay(500);
  Serial.println();
  Serial.println("Iniciando...");
  delay(100);

  // Config Led Status
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);

  // Iniciando conexão Wifi
  setupWiFi();

  // Iniciando conexão Telegram e SSL
  //setupBot();
  
  Serial.println("\nAtivo! ");
  //delay(100);
}

void handleNewMessages(int numNewMessages) {
  
  Serial.print("handleNewMessages ");
  Serial.println(numNewMessages);
  
  String resposta;

  for (int i = 0; i < numNewMessages; i++) { // Para cada mensagem nova
    
    String chatId = String(bot.messages[i].chat_id);   // id do chat
    String senderId = String(bot.messages[i].from_id); // id do contato

    String texto = bot.messages[i].text; //texto que chegou
    String from_name = bot.messages[i].from_name;

    Serial.println("ID: " + chatId + " \tNome: " + from_name);
    Serial.println("Recebido de " + from_name + ": " + texto);

    if (texto == "/start" || texto == "start" || texto == "Start" || texto == "/Start") {
      resposta = "Sejá Bem Vindo **Sr(a) " + from_name + "!** \nO bot já está iniciado.\n\n";
      resposta += "Digite /Comandos para saber os comandos disponiveis.";
    }
    else if (texto == "Status" || texto == "/Status" || texto == "status" || texto == "/status") {
      runningTime = millis() / 1000;
      tipoTime = "segundos";
      if (runningTime >= 60) {
        runningTime = runningTime / 60;
        tipoTime = "minuto(s)";
        if (runningTime >= 60) {
          runningTime = runningTime / 60;
          tipoTime = "hora(s)";
          if (runningTime >= 24) {
            runningTime = runningTime / 24;
            tipoTime = "dia(s)";
          }
        }
      }
      resposta = "Sistema no AR á " + String(runningTime) + " " + tipoTime + "\n";
      resposta += "Está tudo bem por aqui, obrigado por perguntar! 👍";
    }
    else if (texto == "Ajuda" || texto == "/Ajuda" || texto == "ajuda" || texto == "/ajuda") {
      resposta = "Precisando de Ajuda? \nEntre em contato com o ADMIN(@ramon1357) deste BOT.";
    }
    else if (texto == "Comandos" || texto == "/Comandos" || texto == "comandos" || texto == "/comandos") {
      resposta = "/start ou **start** \n__Descrição:__ Inicia o chat do bot. _(Comando não obrigatorio)_ \n\n";
      resposta += "/Status ou **Status** \n**Descrição:** Retorna o status do bot. \n\n";
      resposta += "/Ajuda ou **Ajuda** \n**Descrição:** Mais informação e contato para ajuda. \n\n";
      resposta += "/Comandos ou **Comandos** \n**Descrição:** Retorna todos os possiveis comandos. \n\n";
    }
    else {
      resposta = "Comando não aceito, por favor, tente novamente.";
      resposta += "\n\nCaso não saiba o comando, digite(ou clique) /Comandos para saber os comandos disponiveis.";
    }

    Serial.println("Resposta para " + from_name + ": " + resposta + "\n");
    bot.sendMessage(chatId, resposta, "Markdown");
  }
}

void loop() {
  // Tempo agora desde o boot
  // Se o tempo passado desde a última checagem for maior que o intervalo determinado
  if (millis() - lastCheckTime > Bot_mtbs) {
    // checa por mensagens
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    while (numNewMessages) {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    // Coloca o tempo de útlima checagem como agora
    lastCheckTime = millis();
  }
}

Preciso muito de ajuda. Desde já agradeço!

@eduautomatiza
Copy link

Você já tentou ver o que o telegram está respondendo para esta falha? Seria um bom ponto de partida para entender o problema.

@RamonAlves1357
Copy link
Author

Você já tentou ver o que o telegram está respondendo para esta falha? Seria um bom ponto de partida para entender o problema.

Não responde nada

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants