Created
March 9, 2025 17:30
-
-
Save wilyJ80/f582c53531269ccd4e01d2e1c4e0aad8 to your computer and use it in GitHub Desktop.
global string test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************* | |
A telegram bot for your ESP32 that demonstrates a bot | |
that show bot action message | |
Parts: | |
ESP32 D1 Mini style Dev board* - http://s.click.aliexpress.com/e/C6ds4my | |
(or any ESP32 board) | |
= Affilate | |
If you find what I do useful and would like to support me, | |
please consider becoming a sponsor on Github | |
https://github.com/sponsors/witnessmenow/ | |
Example originally written by Vadim Sinitski | |
Library written by Brian Lough | |
YouTube: https://www.youtube.com/brianlough | |
Tindie: https://www.tindie.com/stores/brianlough/ | |
Twitter: https://twitter.com/witnessmenow | |
*******************************************************************/ | |
#include <WiFi.h> | |
#include <WiFiClientSecure.h> | |
#include <UniversalTelegramBot.h> | |
// Wifi network station credentials | |
#define WIFI_SSID "XXX" | |
#define WIFI_PASSWORD "XXX" | |
// Telegram BOT Token (Get from Botfather) | |
#define BOT_TOKEN "XXX" | |
const unsigned long BOT_MTBS = 1000; // mean time between scan messages | |
WiFiClientSecure secured_client; | |
UniversalTelegramBot bot(BOT_TOKEN, secured_client); | |
unsigned long bot_lasttime; // last time messages' scan has been done | |
bool Start = false; | |
/*******************************************/ | |
// GLOBAL STRINGS: had problems with memory fragmentation on the ESP32 for this code. | |
// Trying global strings to see if things work out better. | |
String chat_id; | |
String text; | |
String from_name; | |
String welcome; | |
void handleNewMessages(int numNewMessages) | |
{ | |
Serial.println("handleNewMessages"); | |
//Serial.println(String(numNewMessages)); | |
for (int i = 0; i < numNewMessages; i++) | |
{ | |
chat_id = bot.messages[i].chat_id; | |
text = bot.messages[i].text; | |
from_name = bot.messages[i].from_name; | |
if (from_name == "") | |
from_name = "Guest"; | |
if (text == "/send_test_action") | |
{ | |
bot.sendChatAction(chat_id, "typing"); | |
delay(4000); | |
bot.sendMessage(chat_id, "Did you see the action message?"); | |
// You can't use own message, just choose from one of bellow | |
//typing for text messages | |
//upload_photo for photos | |
//record_video or upload_video for videos | |
//record_audio or upload_audio for audio files | |
//upload_document for general files | |
//find_location for location data | |
//more info here - https://core.telegram.org/bots/api#sendchataction | |
} | |
if (text == "/start") | |
{ | |
welcome = "Welcome to Universal Arduino Telegram Bot library, " + from_name + ".\n"; | |
welcome += "This is Chat Action Bot example.\n\n"; | |
welcome += "/send_test_action : to send test chat action message\n"; | |
bot.sendMessage(chat_id, welcome); | |
} | |
} | |
} | |
void setup() | |
{ | |
Serial.begin(115200); | |
Serial.println(); | |
// attempt to connect to Wifi network: | |
Serial.print("Connecting to Wifi SSID "); | |
Serial.print(WIFI_SSID); | |
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); | |
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org | |
while (WiFi.status() != WL_CONNECTED) | |
{ | |
Serial.print("."); | |
delay(500); | |
} | |
Serial.print("\nWiFi connected. IP address: "); | |
Serial.println(WiFi.localIP()); | |
Serial.print("Retrieving time: "); | |
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP | |
time_t now = time(nullptr); | |
while (now < 24 * 3600) | |
{ | |
Serial.print("."); | |
delay(100); | |
now = time(nullptr); | |
} | |
Serial.println(now); | |
} | |
void loop() | |
{ | |
if (millis() - bot_lasttime > BOT_MTBS) | |
{ | |
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); | |
} | |
bot_lasttime = millis(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment