-
Notifications
You must be signed in to change notification settings - Fork 315
/
SetMyCommands.ino
100 lines (86 loc) · 2.91 KB
/
SetMyCommands.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Wifi network station credentials
#define WIFI_SSID "YOUR_SSID"
#define WIFI_PASSWORD "YOUR_PASSWORD"
// Telegram BOT Token (Get from Botfather)
#define BOT_TOKEN "XXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
const unsigned long BOT_MTBS = 1000; // mean time between scan messages
unsigned long bot_lasttime; // last time messages' scan has been done
X509List cert(TELEGRAM_CERTIFICATE_ROOT);
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
void handleNewMessages(int numNewMessages)
{
Serial.print("handleNewMessages ");
Serial.println(numNewMessages);
String answer;
for (int i = 0; i < numNewMessages; i++)
{
telegramMessage &msg = bot.messages[i];
Serial.println("Received " + msg.text);
if (msg.text == "/help")
answer = "So you need _help_, uh? me too! use /start or /status";
else if (msg.text == "/start")
answer = "Welcome my new friend! You are the first *" + msg.from_name + "* I've ever met";
else if (msg.text == "/status")
answer = "All is good here, thanks for asking!";
else
answer = "Say what?";
bot.sendMessage(msg.chat_id, answer, "Markdown");
}
}
void bot_setup()
{
const String commands = F("["
"{\"command\":\"help\", \"description\":\"Get bot usage help\"},"
"{\"command\":\"start\", \"description\":\"Message sent when you open a chat with a bot\"},"
"{\"command\":\"status\",\"description\":\"Answer device current status\"}" // no comma on last command
"]");
bot.setMyCommands(commands);
//bot.sendMessage("25235518", "Hola amigo!", "Markdown");
}
void setup()
{
Serial.begin(115200);
Serial.println();
// attempt to connect to Wifi network:
configTime(0, 0, "pool.ntp.org"); // get UTC time via NTP
secured_client.setTrustAnchors(&cert); // Add root certificate for api.telegram.org
Serial.print("Connecting to Wifi SSID ");
Serial.print(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.print("\nWiFi connected. IP address: ");
Serial.println(WiFi.localIP());
// Check NTP/Time, usually it is instantaneous and you can delete the code below.
Serial.print("Retrieving time: ");
time_t now = time(nullptr);
while (now < 24 * 3600)
{
Serial.print(".");
delay(100);
now = time(nullptr);
}
Serial.println(now);
bot_setup();
}
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();
}
}