#include <Arduino.h>
//char WIFI_SSID[]= "Wokwi-GUEST";
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
// #define BOT_TOKEN ""
// #define CHAT_ID ""
#include <FastBot2.h>
FastBot2 bot;
char BOT_TOKEN[47];
char CHAT_ID[11];
#if defined(ESP8266)
#include <ESP8266WiFi.h>
#elif defined(ESP32)
#include <WiFi.h>
#endif
long prev_t = 0;
fb::Message msg;
void updateh(fb::Update& u) {
Serial.println("NEW MESSAGE");
Serial.println(u.message().from().username());
Serial.println(u.message().text());
Serial.println(u.message().chat().id());
// #1
// отправить обратно в чат (эхо)
//bot.sendMessage(fb::Message(u.message().text(), u.message().chat().id()));
// #2
// декодирование Unicode символов (кириллицы) делается вручную!
// String text = u.message().text().decodeUnicode();
// text += " - ответ";
// bot.sendMessage(fb::Message(text, u.message().chat().id()));
// #3
// или так
// fb::Message msg;
msg.text = u.message().text().toString();
msg.chatID = u.message().chat().id();
bot.sendMessage(msg);
Serial.print("heap: ");
Serial.println(ESP.getFreeHeap());
}
void setup() {
Serial.begin(115200);
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected");
//=============
Serial.println("Input BOT_TOKEN and press ENTER:");
while (Serial.available() == 0) ;
int availableBytes = Serial.available();
for(int i=0; i < (availableBytes-1); i++)
{
BOT_TOKEN[i] = Serial.read();
BOT_TOKEN[i+1] = '\0'; // Append a null
}
Serial.println("Input CHAT_ID and press ENTER:");
while (Serial.available() == 0) ;
availableBytes = Serial.available();
for(int i=0; i < (availableBytes-1); i++)
{
CHAT_ID[i] = Serial.read();
CHAT_ID[i+1] = '\0'; // Append a null
}
// ============
bot.attachUpdate(updateh); // подключить обработчик обновлений
bot.setToken(F(BOT_TOKEN)); // установить токен
// режим опроса обновлений. Самый быстрый - Long
// особенности читай тут в самом низу
// https://github.com/GyverLibs/FastBot2/blob/main/docs/3.start.md
// bot.setPollMode(fb::Poll::Sync, 4000); // умолч
// bot.setPollMode(fb::Poll::Async, 4000);
bot.setPollMode(fb::Poll::Long, 20000);
// поприветствуем админа
bot.sendMessage(fb::Message("Hello!", CHAT_ID));
// tick.attach(5, test_msg);
// tkr_mtr.detach();
}
void loop() {
// вызывать тикер в loop
bot.tick();
if ((millis()-prev_t) > 5000) {
// fb::Message msg;
msg.text = "HELLO???";
bot.sendMessage(msg);
// bot.sendMessage(fb::Message("HELLO!!!", CHAT_ID));
prev_t = millis();
};
}