GyverLibs / FastBot

Многофункциональная быстрая библиотека для Телеграм бота на esp8266/esp32
MIT License
186 stars 31 forks source link

рестарт #11

Closed AndreyUshak closed 2 years ago

AndreyUshak commented 2 years ago

Привет, запустил пример с меню, и повесил свою команду на кнопку, ESP.restart(); после этого есп переходит в вечный ребут, очистка чата не помогает, bot.deleteMessage(bot.lastUsrMsg()); нет работает, новые команды не воспринимает и не удаляет, а вытаскивает самую первую команды на рестарт и так по кругу.

void setup() { connectWiFi(); bot.setChatID(CHAT_ID); // подключаем функцию-обработчик bot.attach(newMsg); // показать юзер меню (\t - горизонтальное разделение кнопок, \n - вертикальное bot.showMenu("restart \t Menu2 \t Menu3 \n Close"); bot.sendMessage("start!"); delay(5000); bot.deleteMessage(bot.lastBotMsg()); bot.deleteMessage(bot.lastUsrMsg()); } // обработчик сообщений void newMsg(FB_msg& msg) { Serial.println(msg.text); if (msg.text == "Close") bot.closeMenu(); if (msg.text == "restart") ESP.restart(); } как-то можно это подправить? Спасибо.

GyverLibs commented 2 years ago

Привет, это не будет работать, потому что сообщение отмечается прочитанным при следующем обращении к серверу. Можно поднять флаг, по которому уходить в ресет, предварительно вызвав tickManual

bool res = 0;
void message(FB_msg &msg) {
  if (msg.text == "restart") res = 1;
}
void loop() {
  if (res) {
    bot.tickManual();
    ESP.restart();
  }
}
AndreyUshak commented 2 years ago

Спасибо за подсказку, я ещё как вариант подумал сравнивать время msg с системным зафиксированным при первом тике и отсеивать всё, что меньше. Закинул экспериментально чуток на юмани, (до этого не пользовался этим сервисом), удачи).

GyverLibs commented 2 years ago

Спасибо, пришли, значит сегодня банкет)