У меня проблема, я хочу управлять платой esp node mcu через Телеграм. Пишу код в Arduino ide, ошибка; 'class UniversalTelegramBot' has no member named 'deleteMessage'; did you mean 'sendMessage'? Вот код: Код (Text): #include <ESP8266WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> #define BOTtoken "xxxxx:xxxxxxxxxxxxxxx" // Токен бота в формате xxxxx:xxxxxxxxxxxxxxx, начните беседу с ботом "BotFather" в Telegram и, // следуя инструкциям, создайте нового бота. Вам будет выдан секретный токен. Никому его не сообщайте. char ssid[] = "WiFi_Name"; // SSID (имя) вашей WiFi сети char password[] = "12345678"; // пароль wifi сети String buttons[] = {"light", "Socket"}; // имена подключенных устройств, с кириллицей НЕ РАБОТАЕТ! int pin[] = {5, 4}; // номер вывода, к которому подключено исполняющее устройство (реле, транзистор и т.д.) bool protection = 0; // права доступа: 0 - доступно всем пользователям, 1 - доступ по Chat ID, если оно внесено в chatID_acces. int chatID_acces[] = {}; // Chat ID, которым разрешен доступ, игнорируется, если protection = 0. // Примечание: по команде /start в Telegram, если у пользователя нет прав доступа на управление устройством, бот выдаст Chat ID // этого пользователя, чтобы его можно было внести в chatID_acces. Chat ID - это уникальный номер чата, который выдается // пользователю, начавшему общение с ботом. String on_symbol="✅ "; // Индикатор включенного состояния, можно заменить, например, на "Вкл." String off_symbol="☑ "; // Индикатор выключенного состояния. //Дальше ничего интересного, но если хотите, можете посмотреть. WiFiClientSecure client; UniversalTelegramBot bot(BOTtoken, client); int quantity; int Bot_mtbs = 3000; long Bot_lasttime; bool Start = false; const int ledPin = 2; int ledStatus = 0; String keyboardJson = ""; //int messageID; void handleNewMessages(int numNewMessages) { Serial.println("handleNewMessages"); Serial.println(String(numNewMessages)); for (int i=0; i<numNewMessages; i++) { String chat_id = String(bot.messages.chat_id); String m_id = String(bot.messages.message_id); if (bot.messages.type == "callback_query") { String statusMessage; for (int i1=0; i1<quantity; i1++) { if (bot.messages.text == buttons[i1]) { digitalWrite (pin[i1], !digitalRead(pin[i1])); } digitalRead(pin[i1])?statusMessage+=on_symbol:statusMessage+=off_symbol; statusMessage+=buttons[i1]; statusMessage+='\n'; } bot.deleteMessage(bot.messages.chat_id, bot.messages.message_id); bot.sendMessageWithInlineKeyboard(bot.messages.chat_id, statusMessage, "", keyboardJson); } else { String text = bot.messages.text; Serial.println(m_id); String from_name = bot.messages.from_name; if (from_name == "") from_name = "Guest"; int i2=0; do{ if (!protection || String(chatID_acces[i2]) == chat_id) { if (text == "/control") { String statusMessage; for (int i=0; i<quantity; i++) { digitalRead(pin)?statusMessage+=on_symbol:statusMessage+=off_symbol; statusMessage+=buttons; statusMessage+='\n'; } bot.sendMessageWithInlineKeyboard(chat_id, statusMessage, "", keyboardJson); } if (text == "/start") { String welcome = "Приветствую " + from_name + ".\n"; welcome += "Это умный выключатель на микроконтроллере ESP8266, управляемый через Telegram.\n\n"; welcome += "/control : перейти к управлению.\n"; String keyboardStart = "[[{ \"text\" : \"YouTube канал автора\", \"url\" : \"\" }]]"; bot.sendMessageWithInlineKeyboard(chat_id, welcome, "", keyboardStart); } break; }else{ if (i2==((sizeof(chatID_acces)/sizeof(int))-1)&&text == "/start"||(sizeof(chatID_acces)/sizeof(int))==0&&text == "/start") { bot.sendMessage(chat_id, "No access, Chat ID: "+chat_id, ""); } } i2++; }while (i2<(sizeof(chatID_acces)/sizeof(int))); } } } void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.print("Connecting Wifi: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); quantity=sizeof(pin)/sizeof(int); for (int i=0; i<quantity; i++) { pinMode(pin, OUTPUT); } for (int i=0; i<quantity; i++) { if(i==0) keyboardJson += "["; keyboardJson += "[{ \"text\" : \""; keyboardJson += buttons; keyboardJson += "\", \"callback_data\" : \""; keyboardJson += buttons; keyboardJson += "\" }]"; if(i==quantity-1){ keyboardJson += "]"; }else{ keyboardJson += ","; } } delay(10); client.setInsecure(); } void loop() { if (millis() > Bot_lasttime + Bot_mtbs) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while(numNewMessages) { handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } Bot_lasttime = millis(); } }
Вам правильно сказали. Код надо вставлять и притом правильно ибо и правда никто не будет открывать левые файлы. Сделать это за Вас? Что могу сказать навскидку—библиотека UniversalTelegramBot рабочая скачайте последнюю версию. И смотрите код из примеров, мудрить не надо. Что то я не помню таких команд deleteMessage?