Skip to content

Commit c041ec4

Browse files
authored
Merge pull request #1 from fritsjan/update_message
Added update message option
2 parents e2c901f + 1eda34d commit c041ec4

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

src/UniversalTelegramBot.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ String UniversalTelegramBot::buildCommand(const String& cmd) {
6464

6565
String UniversalTelegramBot::sendGetToTelegram(const String& command) {
6666
String body, headers;
67-
bool avail;
67+
//bool avail; // bugfix FJvK
6868

6969
// Connect with api.telegram.org if not already connected
7070
if (!client->connected()) {
@@ -236,7 +236,7 @@ String UniversalTelegramBot::sendMultipartFormDataToTelegram(
236236
client->print(buildCommand(command));
237237
client->println(F(" HTTP/1.1"));
238238
// 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
240240
client->println(F("User-Agent: arduino/1.0"));
241241
client->println(F("Accept: */*"));
242242

@@ -268,7 +268,7 @@ String UniversalTelegramBot::sendMultipartFormDataToTelegram(
268268
#endif
269269
byte buffer[512];
270270
int count = 0;
271-
char ch;
271+
//char ch; // bugfix FJvK
272272
while (moreDataAvailableCallback()) {
273273
buffer[count] = getNextByteCallback();
274274
count++;
@@ -461,6 +461,7 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
461461
messages[messageIndex].chat_id = message["chat"]["id"].as<String>();
462462
messages[messageIndex].chat_title = message["chat"]["title"].as<String>();
463463
messages[messageIndex].hasDocument = false;
464+
messages[messageIndex].message_id = message["message_id"].as<int>(); // added message id
464465
if (message.containsKey("text")) {
465466
messages[messageIndex].text = message["text"].as<String>();
466467

@@ -480,14 +481,16 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
480481
messages[messageIndex].reply_to_message_id = message["reply_to_message"]["message_id"];
481482
// no need to check if containsKey["text"]. If it doesn't, it default to null
482483
messages[messageIndex].reply_to_text = message["reply_to_message"]["text"].as<String>();
483-
}
484+
}
485+
484486
} else if (result.containsKey("channel_post")) {
485487
JsonObject message = result["channel_post"];
486488
messages[messageIndex].type = F("channel_post");
487489
messages[messageIndex].text = message["text"].as<String>();
488490
messages[messageIndex].date = message["date"].as<String>();
489491
messages[messageIndex].chat_id = message["chat"]["id"].as<String>();
490492
messages[messageIndex].chat_title = message["chat"]["title"].as<String>();
493+
messages[messageIndex].message_id = message["message_id"].as<int>(); // added message id
491494

492495
} else if (result.containsKey("callback_query")) {
493496
JsonObject message = result["callback_query"];
@@ -500,6 +503,8 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
500503
messages[messageIndex].reply_to_text = message["message"]["text"].as<String>();
501504
messages[messageIndex].chat_title = F("");
502505
messages[messageIndex].query_id = message["id"].as<String>();
506+
messages[messageIndex].message_id = message["message"]["message_id"].as<int>(); // added message id
507+
503508
} else if (result.containsKey("edited_message")) {
504509
JsonObject message = result["edited_message"];
505510
messages[messageIndex].type = F("edited_message");
@@ -508,6 +513,7 @@ bool UniversalTelegramBot::processResult(JsonObject result, int messageIndex) {
508513
messages[messageIndex].date = message["date"].as<String>();
509514
messages[messageIndex].chat_id = message["chat"]["id"].as<String>();
510515
messages[messageIndex].chat_title = message["chat"]["title"].as<String>();
516+
messages[messageIndex].message_id = message["message_id"].as<int>(); // added message id
511517

512518
if (message.containsKey("text")) {
513519
messages[messageIndex].text = message["text"].as<String>();
@@ -600,25 +606,29 @@ bool UniversalTelegramBot::sendMessageWithReplyKeyboard(
600606
bool UniversalTelegramBot::sendMessageWithInlineKeyboard(const String& chat_id,
601607
const String& text,
602608
const String& parse_mode,
603-
const String& keyboard) {
609+
const String& keyboard,
610+
const int& message_id) { // added message_id
604611

605612
DynamicJsonDocument payload(maxMessageLength);
606613
payload["chat_id"] = chat_id;
607614
payload["text"] = text;
608615

616+
if (message_id != 0)
617+
payload["message_id"] = message_id; // added message_id
618+
609619
if (parse_mode != "")
610620
payload["parse_mode"] = parse_mode;
611621

612622
JsonObject replyMarkup = payload.createNestedObject("reply_markup");
613623
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
615625
}
616626

617627
/***********************************************************************
618-
* SendPostMessage - function to send message to telegram *
628+
* SendPostMessage - function to send message to telegram *
619629
* (Arguments to pass: chat_id, text to transmit and markup(optional)) *
620630
***********************************************************************/
621-
bool UniversalTelegramBot::sendPostMessage(JsonObject payload) {
631+
bool UniversalTelegramBot::sendPostMessage(JsonObject payload, bool edit = false) { // added message_id
622632

623633
bool sent = false;
624634
#ifdef TELEGRAM_DEBUG
@@ -630,8 +640,8 @@ bool UniversalTelegramBot::sendPostMessage(JsonObject payload) {
630640

631641
if (payload.containsKey("text")) {
632642
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
635645
Serial.println(response);
636646
#endif
637647
sent = checkForOkResponse(response);

src/UniversalTelegramBot.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ struct telegramMessage {
5757
float longitude;
5858
float latitude;
5959
int update_id;
60+
int message_id; // added message id
6061

6162
int reply_to_message_id;
6263
String reply_to_text;
@@ -89,11 +90,11 @@ class UniversalTelegramBot {
8990
bool resize = false, bool oneTime = false,
9091
bool selective = false);
9192
bool sendMessageWithInlineKeyboard(const String& chat_id, const String& text,
92-
const String& parse_mode, const String& keyboard);
93+
const String& parse_mode, const String& keyboard, const int& message_id = 0); // added message id
9394

9495
bool sendChatAction(const String& chat_id, const String& text);
9596

96-
bool sendPostMessage(JsonObject payload);
97+
bool sendPostMessage(JsonObject payload, bool edit = false); // added message id option to send an editMessageText command
9798
String sendPostPhoto(JsonObject payload);
9899
String sendPhotoByBinary(const String& chat_id, const String& contentType, int fileSize,
99100
MoreDataAvailable moreDataAvailableCallback,

0 commit comments

Comments
 (0)