mirror of
https://github.com/eworm-de/routeros-scripts
synced 2024-05-14 08:04:19 +00:00
mod/notification-telegram: remember ids of sent messages
This commit is contained in:
parent
7df4f9e78c
commit
8ecde47a78
1 changed files with 17 additions and 9 deletions
|
@ -15,9 +15,11 @@
|
||||||
# flush telegram queue
|
# flush telegram queue
|
||||||
:set FlushTelegramQueue do={
|
:set FlushTelegramQueue do={
|
||||||
:global TelegramQueue;
|
:global TelegramQueue;
|
||||||
|
:global TelegramMessageIDs;
|
||||||
|
|
||||||
:global IsFullyConnected;
|
:global IsFullyConnected;
|
||||||
:global LogPrintExit2;
|
:global LogPrintExit2;
|
||||||
|
:global ParseJson;
|
||||||
|
|
||||||
:if ([ $IsFullyConnected ] = false) do={
|
:if ([ $IsFullyConnected ] = false) do={
|
||||||
$LogPrintExit2 debug $0 ("System is not fully connected, not flushing.") false;
|
$LogPrintExit2 debug $0 ("System is not fully connected, not flushing.") false;
|
||||||
|
@ -34,14 +36,13 @@
|
||||||
:foreach Id,Message in=$TelegramQueue do={
|
:foreach Id,Message in=$TelegramQueue do={
|
||||||
:if ([ :typeof $Message ] = "array" ) do={
|
:if ([ :typeof $Message ] = "array" ) do={
|
||||||
:do {
|
:do {
|
||||||
/tool/fetch check-certificate=yes-without-crl output=none http-method=post \
|
:local Data ([ /tool/fetch check-certificate=yes-without-crl output=user http-method=post \
|
||||||
("https://api.telegram.org/bot" . ($Message->"tokenid") . "/sendMessage") \
|
("https://api.telegram.org/bot" . ($Message->"tokenid") . "/sendMessage") \
|
||||||
http-data=("chat_id=" . ($Message->"chatid") . \
|
http-data=("chat_id=" . ($Message->"chatid") . "&disable_notification=" . ($Message->"silent") . \
|
||||||
"&disable_notification=" . ($Message->"silent") . \
|
"&reply_to_message_id=" . ($Message->"replyto") . "&disable_web_page_preview=true" . \
|
||||||
"&reply_to_message_id=" . ($Message->"replyto") . \
|
"&parse_mode=" . ($Message->"parsemode") . "&text=" . ($Message->"text")) as-value ]->"data");
|
||||||
"&disable_web_page_preview=true&parse_mode=" . ($Message->"parsemode") . \
|
|
||||||
"&text=" . ($Message->"text")) as-value;
|
|
||||||
:set ($TelegramQueue->$Id);
|
:set ($TelegramQueue->$Id);
|
||||||
|
:set ($TelegramMessageIDs->([ $ParseJson ([ $ParseJson $Data ]->"result") ]->"message_id")) 1;
|
||||||
} on-error={
|
} on-error={
|
||||||
$LogPrintExit2 debug $0 ("Sending queued Telegram message failed.") false;
|
$LogPrintExit2 debug $0 ("Sending queued Telegram message failed.") false;
|
||||||
:set AllDone false;
|
:set AllDone false;
|
||||||
|
@ -64,6 +65,7 @@
|
||||||
:global TelegramChatId;
|
:global TelegramChatId;
|
||||||
:global TelegramChatIdOverride;
|
:global TelegramChatIdOverride;
|
||||||
:global TelegramFixedWidthFont;
|
:global TelegramFixedWidthFont;
|
||||||
|
:global TelegramMessageIDs;
|
||||||
:global TelegramQueue;
|
:global TelegramQueue;
|
||||||
:global TelegramTokenId;
|
:global TelegramTokenId;
|
||||||
:global TelegramTokenIdOverride;
|
:global TelegramTokenIdOverride;
|
||||||
|
@ -73,6 +75,7 @@
|
||||||
:global EitherOr;
|
:global EitherOr;
|
||||||
:global IfThenElse;
|
:global IfThenElse;
|
||||||
:global LogPrintExit2;
|
:global LogPrintExit2;
|
||||||
|
:global ParseJson;
|
||||||
:global SymbolForNotification;
|
:global SymbolForNotification;
|
||||||
:global UrlEncode;
|
:global UrlEncode;
|
||||||
|
|
||||||
|
@ -111,6 +114,10 @@
|
||||||
:return false;
|
:return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:if ([ :typeof $TelegramMessageIDs ] = "nothing") do={
|
||||||
|
:set TelegramMessageIDs ({});
|
||||||
|
}
|
||||||
|
|
||||||
:local Truncated false;
|
:local Truncated false;
|
||||||
:local Text ("*__" . [ $EscapeMD ("[" . $IdentityExtra . $Identity . "] " . \
|
:local Text ("*__" . [ $EscapeMD ("[" . $IdentityExtra . $Identity . "] " . \
|
||||||
($Notification->"subject")) "plain" ] . "__*\n\n");
|
($Notification->"subject")) "plain" ] . "__*\n\n");
|
||||||
|
@ -139,11 +146,12 @@
|
||||||
:if ([ $CertificateAvailable "Go Daddy Secure Certificate Authority - G2" ] = false) do={
|
:if ([ $CertificateAvailable "Go Daddy Secure Certificate Authority - G2" ] = false) do={
|
||||||
$LogPrintExit2 warning $0 ("Downloading required certificate failed.") true;
|
$LogPrintExit2 warning $0 ("Downloading required certificate failed.") true;
|
||||||
}
|
}
|
||||||
/tool/fetch check-certificate=yes-without-crl output=none http-method=post \
|
:local Data ([ /tool/fetch check-certificate=yes-without-crl output=user http-method=post \
|
||||||
("https://api.telegram.org/bot" . $TokenId . "/sendMessage") \
|
("https://api.telegram.org/bot" . $TokenId . "/sendMessage") \
|
||||||
http-data=("chat_id=" . $ChatId . "&disable_notification=" . ($Notification->"silent") . \
|
http-data=("chat_id=" . $ChatId . "&disable_notification=" . ($Notification->"silent") . \
|
||||||
"&reply_to_message_id=" . ($Notification->"replyto") . \
|
"&reply_to_message_id=" . ($Notification->"replyto") . "&disable_web_page_preview=true" . \
|
||||||
"&disable_web_page_preview=true&parse_mode=" . $ParseMode . "&text=" . $Text) as-value;
|
"&parse_mode=" . $ParseMode . "&text=" . $Text) as-value ]->"data");
|
||||||
|
:set ($TelegramMessageIDs->([ $ParseJson ([ $ParseJson $Data ]->"result") ]->"message_id")) 1;
|
||||||
} on-error={
|
} on-error={
|
||||||
$LogPrintExit2 info $0 ("Failed sending telegram notification! Queuing...") false;
|
$LogPrintExit2 info $0 ("Failed sending telegram notification! Queuing...") false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue