FastBot. Обсуждение библиотеки

PiratFox

★★★★★✩✩
13 Фев 2020
1,707
474
Но может можно как-то все-таки сделать передачу сообщений между двумя приложениями (контроллерами) через ТГ ?
Чего вы зациклились на ТГ? Есть другие способы. Например, через какой-нить облачный сервер в виде обмена небольшими файлами. Да мало ли ещё как.
 

cyberman

✩✩✩✩✩✩✩
27 Июн 2023
4
0
@PiratFox, да, пожалуй вы правы

@PiratFox, ну как что зациклился на ТГ... При помощи библиотеки FastBot работа с ТГ - одно удовольствие, все просто до безобразия. Фактически библиотека все делает сама. Вот и возник соблазн решить озвученную задачу при помощи этой библиотеки...
 

Serge_S

✩✩✩✩✩✩✩
23 Ноя 2023
2
1
ESP8266 FastBot работает. Но сейчас перестал отвечать на нажатие кнопок inline клавиатуры, раньше всё работало.
Если кто может , помогите проверить, это я что-то сломал или в телеге изменения и библиотека не работает в это части?
 

cyberman

✩✩✩✩✩✩✩
27 Июн 2023
4
0
Уважаемые коллеги,помогите пожалуйста с библиотекой FastBot и меню в Телеграм.
Сделал при помощи библиотеки на ESP32 телеграм-бота. Сделал инлайн-меню. Пытаюсь редактировать его при помощи функции editMenuCallback(). Все работает, но только в чате одного единственного пользователя. Т.е. если я в bot.setChatID(CHAT_ID) в строке CHAT_ID указываю ИД нескольких чатов через запятую или даже вызываю editMenuCallback() с явным указанием этих самых ИД чатов через запятую - меню редактируется только в одном чате, который указан последним в перечне. Я что-то не так делаю или так было задумано? Если так задумано - то как сделать так, чтобы меню отредактировалось во всех чатах всех пользователей, а не только у одного счастливчика, который оказался последним в списке...
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
570
Для редактирования меню указывается id сообщения в чате, этот id во всех чатах разный. Поэтому пакетно поменять сообщения в разных чатах можно только следя отдельно за счётчиками id в каждом чате персонально
 

gidiara666

★✩✩✩✩✩✩
5 Май 2023
59
13
Решил потестить FastBot2. Соединяется, откликается в чате. Но меню создать, которое выводится после рестарта ESP, как в FastBot - так и не осилил. Как обычно у Гайвера в примерах: куча возможностей, какая что делает - хз. Нет, чтобы сделать несколько простеньких примеров для... скажем так, недалёких:
1. вот это выводит меню.
2. вот это позволяет отказаться от сообщений, отправленых до загрузки
3. вот это позволяет отправить любую цифру (мечта!) с клавиатуры телефона и установить нужную температуру для термостата. А то я организовал костыль с кнопками "поднять уставку на 1 градус", и "опустить уставку на 1 градус", так и маюсь из-за недоразвитости мозга.
Итак, простые вопросы: как вывести в FastBot2 меню после загрузки? Как обрабатывать реакцию на нажатие клавиш?
Желательно в формате полного кода, а не заклинаний в 1 строку...
 
  • Лойс +1
Реакции: ~Pavel~

leon013

✩✩✩✩✩✩✩
14 Апр 2022
5
2
3. Для ввода любого числа я делал парсинг приходящего ответа. Делал это давно , сразу и не смогу вспомнить для чего именно сделал так, но работало. Для температуры пользую только uint16_t, мне так проще, датчики ds18b20 данные только до десятых градуса округлены.

C++:
    if(msg.text.substring(1,6) == "tn1on" ){ //tn1onXX.X
      double d_tmp;
      String welcome;
      uint8_t tmp,i,flag_error_ton;
      
      size_in = msg.text.length();
      msg.text.toCharArray(arr_in, 15);
        tmp = 0;
        flag_error_ton = 0;
        if((size_in == 10) && (arr_in[8] == 0x2e)) {
          arr_in[8] = arr_in[9];
            for(i = 6; i < 9; i++){
              if((arr_in[i] > 0x2f) && (arr_in[i] < 0x3a)){
                arr_in[i] -=  0x30;
                tmp++;
              }
            }
                if(tmp == 3){
                   simvol_out = arr_in[6] * 100;
                   simvol_out += arr_in[7] * 10;
                   simvol_out += arr_in[8] ;

                   if (simvol_out >= temp_stat_1_off)  flag_error_ton++;
                    else temp_stat_1_on =  simvol_out;   
                   // Save ????
                   eeprom_save_data(3);
                }
                  else flag_error_ton++;
                  
         }
         else flag_error_ton++;
      
          if(flag_error_ton == 0) {
              d_tmp = temp_stat_1_on / 10.0;
              welcome = "Включения нагрева Т1: " + String(d_tmp) +" \n";
          }
            else welcome = (F("Неверный ввод числа \n"));

        bot.sendMessage(welcome);
    }
 
  • Лойс +1
Реакции: gidiara666

Zaretskiy

✩✩✩✩✩✩✩
1 Апр 2021
3
1
Всех приветствую.
Подскажите, пожалуйста, есть ли какая-либо возможность чтобы бот переслал сообщение из одного чата в другой?
 

Alexsnek

✩✩✩✩✩✩✩
12 Мар 2024
1
0
Суть такая. В роуторе стоит 3G свисток, как можно определить наличие интернета, чтобы произвести перезагрузку роутера при его отсутствии.
 

Andy117

✩✩✩✩✩✩✩
20 Мар 2023
7
1
@Serge_S,
Тоже задолбался. Работал, а тут боту сообщения идут, и то через раз, а обратно нет. И библиотеки разные использовал. Причем изредка все же кое что прорывались непонятно по какому признаку. Сменил токен - заработало.
У меня это совпало с тем, что по недосмотру bot.tick() был в loop без всякой задержки. Может Телега восприняла это как спам или DDOS-атаку и забанила?
 

viktorfrancuzov

✩✩✩✩✩✩✩
19 Мар 2024
1
0
здравствуйте. а почему в библиотеке нет возможности соединения через gprs modem?
 

gidiara666

★✩✩✩✩✩✩
5 Май 2023
59
13
@viktorfrancuzov, дорогой друг, а что конкретно хотел-то? Чтоб была надпись в библиотеке: "Если есть modem, то включи на нём wifi и далее юзай бота как хош"? Или нет wifi в древнем модеме, и ты выдумал, что Telegram bot для ESP обязан ещё и драйвером модема (причём, любого!!!) работать и питать его по шнурку? Оригинально, однако...
Тогда встречный вопрос: почему твой кассетный плеер не регулирует температуру в теплице?
 
Изменено:

ZORAN

✩✩✩✩✩✩✩
21 Апр 2024
1
0
подскажите, пожалуйста, можно ли с помощью фастбота отправить в чат файл-изображение и текст в одном сообщении?
 
Изменено:

DTViMS

✩✩✩✩✩✩✩
24 Июл 2024
1
0
Есть общая проблема (по мне так это фича, но об этом далее), что при таком коде:
C++:
void message(FB_msg &msg) {
  if (msg.text == "restart") ESP.restart();
}
ESP-шка будет постоянно рестартиться, т.е. фактически полученное сообщение не будет отмечено как прочитанное.
Собственно вопрос:
А что именно в Телеграмм АПИ, в данном случае, отвечает за отметку сообщения о прочтении?
Смысл в том, что я хочу прочитать сообщение, но некоторое время, чтобы оно все-равно осталось не прочитанным и "/getUpdates" имело это сообщение в списке, собственно если это вообще возможно.

Сам отвечу:
Следующий запрос с доп. параметром /getUpdates?offset={update_id} оставляет во всех следующих запросах /getUpdates только сообщения начиная с указанного {update_id}, т.е. если мы сделаем запрос /getUpdates?offset={update_id+1} = это отметит все сообщения как прочитанные, что по сути и делает метод tickManual() при следующем запуске, что обнуляет очередь.

По сути, не так плохо!