@@ -64,7 +64,7 @@ String UniversalTelegramBot::buildCommand(const String& cmd) {
64
64
65
65
String UniversalTelegramBot::sendGetToTelegram (const String& command) {
66
66
String body, headers;
67
- bool avail;
67
+ // bool avail; // bugfix FJvK
68
68
69
69
// Connect with api.telegram.org if not already connected
70
70
if (!client->connected ()) {
@@ -236,7 +236,7 @@ String UniversalTelegramBot::sendMultipartFormDataToTelegram(
236
236
client->print (buildCommand (command));
237
237
client->println (F (" HTTP/1.1" ));
238
238
// Host header
239
- client->print (F (" Host: " TELEGRAM_HOST));
239
+ client->println (F (" Host: " TELEGRAM_HOST)); // bugfix - https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/issues/186
240
240
client->println (F (" User-Agent: arduino/1.0" ));
241
241
client->println (F (" Accept: */*" ));
242
242
@@ -268,7 +268,7 @@ String UniversalTelegramBot::sendMultipartFormDataToTelegram(
268
268
#endif
269
269
byte buffer[512 ];
270
270
int count = 0 ;
271
- char ch;
271
+ // char ch; // bugfix FJvK
272
272
while (moreDataAvailableCallback ()) {
273
273
buffer[count] = getNextByteCallback ();
274
274
count++;
@@ -461,6 +461,7 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
461
461
messages[messageIndex].chat_id = message[" chat" ][" id" ].as <String>();
462
462
messages[messageIndex].chat_title = message[" chat" ][" title" ].as <String>();
463
463
messages[messageIndex].hasDocument = false ;
464
+ messages[messageIndex].message_id = message[" message_id" ].as <int >(); // added message id
464
465
if (message.containsKey (" text" )) {
465
466
messages[messageIndex].text = message[" text" ].as <String>();
466
467
@@ -480,14 +481,16 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
480
481
messages[messageIndex].reply_to_message_id = message[" reply_to_message" ][" message_id" ];
481
482
// no need to check if containsKey["text"]. If it doesn't, it default to null
482
483
messages[messageIndex].reply_to_text = message[" reply_to_message" ][" text" ].as <String>();
483
- }
484
+ }
485
+
484
486
} else if (result.containsKey (" channel_post" )) {
485
487
JsonObject message = result[" channel_post" ];
486
488
messages[messageIndex].type = F (" channel_post" );
487
489
messages[messageIndex].text = message[" text" ].as <String>();
488
490
messages[messageIndex].date = message[" date" ].as <String>();
489
491
messages[messageIndex].chat_id = message[" chat" ][" id" ].as <String>();
490
492
messages[messageIndex].chat_title = message[" chat" ][" title" ].as <String>();
493
+ messages[messageIndex].message_id = message[" message_id" ].as <int >(); // added message id
491
494
492
495
} else if (result.containsKey (" callback_query" )) {
493
496
JsonObject message = result[" callback_query" ];
@@ -500,6 +503,8 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
500
503
messages[messageIndex].reply_to_text = message[" message" ][" text" ].as <String>();
501
504
messages[messageIndex].chat_title = F (" " );
502
505
messages[messageIndex].query_id = message[" id" ].as <String>();
506
+ messages[messageIndex].message_id = message[" message" ][" message_id" ].as <int >(); // added message id
507
+
503
508
} else if (result.containsKey (" edited_message" )) {
504
509
JsonObject message = result[" edited_message" ];
505
510
messages[messageIndex].type = F (" edited_message" );
@@ -508,6 +513,7 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
508
513
messages[messageIndex].date = message[" date" ].as <String>();
509
514
messages[messageIndex].chat_id = message[" chat" ][" id" ].as <String>();
510
515
messages[messageIndex].chat_title = message[" chat" ][" title" ].as <String>();
516
+ messages[messageIndex].message_id = message[" message_id" ].as <int >(); // added message id
511
517
512
518
if (message.containsKey (" text" )) {
513
519
messages[messageIndex].text = message[" text" ].as <String>();
@@ -600,25 +606,29 @@ bool UniversalTelegramBot::sendMessageWithReplyKeyboard(
600
606
bool UniversalTelegramBot::sendMessageWithInlineKeyboard (const String& chat_id,
601
607
const String& text,
602
608
const String& parse_mode,
603
- const String& keyboard) {
609
+ const String& keyboard,
610
+ const int & message_id) { // added message_id
604
611
605
612
DynamicJsonDocument payload (maxMessageLength);
606
613
payload[" chat_id" ] = chat_id;
607
614
payload[" text" ] = text;
608
615
616
+ if (message_id != 0 )
617
+ payload[" message_id" ] = message_id; // added message_id
618
+
609
619
if (parse_mode != " " )
610
620
payload[" parse_mode" ] = parse_mode;
611
621
612
622
JsonObject replyMarkup = payload.createNestedObject (" reply_markup" );
613
623
replyMarkup[" inline_keyboard" ] = serialized (keyboard);
614
- return sendPostMessage (payload.as <JsonObject>());
624
+ return sendPostMessage (payload.as <JsonObject>(), message_id); // if message id == 0 then edit is false, else edit is true
615
625
}
616
626
617
627
/* **********************************************************************
618
- * SendPostMessage - function to send message to telegram *
628
+ * SendPostMessage - function to send message to telegram *
619
629
* (Arguments to pass: chat_id, text to transmit and markup(optional)) *
620
630
***********************************************************************/
621
- bool UniversalTelegramBot::sendPostMessage (JsonObject payload) {
631
+ bool UniversalTelegramBot::sendPostMessage (JsonObject payload, bool edit = false ) { // added message_id
622
632
623
633
bool sent = false ;
624
634
#ifdef TELEGRAM_DEBUG
@@ -630,8 +640,8 @@ bool UniversalTelegramBot::sendPostMessage(JsonObject payload) {
630
640
631
641
if (payload.containsKey (" text" )) {
632
642
while (millis () < sttime + 8000 ) { // loop for a while to send the message
633
- String response = sendPostToTelegram (BOT_CMD (" sendMessage" ), payload);
634
- #ifdef TELEGRAM_DEBUG
643
+ String response = sendPostToTelegram ((edit ? BOT_CMD (" editMessageText " ) : BOT_CMD ( " sendMessage" )) , payload); // if edit is true we send a editMessageText CMD
644
+ #ifdef TELEGRAM_DEBUG
635
645
Serial.println (response);
636
646
#endif
637
647
sent = checkForOkResponse (response);
0 commit comments