telegram-chat: act on reply from self

This commit is contained in:
Christian Hesse 2023-10-10 13:16:58 +02:00
parent fd1263324d
commit 399d952ac2
5 changed files with 20 additions and 2 deletions

Binary file not shown.

View file

@ -46,6 +46,8 @@ parameters:
Usage and invocation
--------------------
### Activating device(s)
This script is capable of chatting with multiple devices. By default a
device is passive and not acting on messages. To activate it send a message
containing `! identity` (exclamation mark, optional space and system's
@ -63,6 +65,19 @@ act on your commands.
Send a single exclamation mark or non-existent identity to make all
devices passive again.
### Reply to message
Let's assume you received a message from a device before, and want to send
a command to that device. No need to activate it, you can just reply to
that message.
![reply to message](telegram-chat.d/03-reply.avif)
Associated messages are cleared on device reboot.
> ⚠️ **Warning**: If another device is activated both will act, the one from
> reply and the active one!
Known limitations
-----------------

View file

@ -12,7 +12,7 @@
:local 0 "global-functions";
# expected configuration version
:global ExpectedConfigVersion 105;
:global ExpectedConfigVersion 106;
# global variables not to be changed by user
:global GlobalFunctionsReady false;

View file

@ -19,6 +19,7 @@
103="Dropped hard-coded name and timeout from 'hotspot-to-wpa-cleanup', instead a comment is required for dhcp server now.";
104="All relevant scripts were ported to new wifiwave2 and are available for AX devices now!";
105="Extended 'check-routeros-update' to support automatic update from specific neighbor(s).";
106="Modified 'telegram-chat' to make it act on message replies, without activation.";
};
# Migration steps to be applied on script updates

View file

@ -17,6 +17,7 @@
:global TelegramChatIdsTrusted;
:global TelegramChatOffset;
:global TelegramChatRunTime;
:global TelegramMessageIDs;
:global TelegramTokenId;
:global CertificateAvailable;
@ -83,7 +84,8 @@ $WaitFullyConnected;
$LogPrintExit2 info $0 ("Now " . [ $IfThenElse $TelegramChatActive "active" "passive" ] . \
" from update " . $UpdateID . "!") false;
} else={
:if ($TelegramChatActive = true && [ :len ($Message->"text") ] > 0) do={
:if (($TelegramMessageIDs->([ $ParseJson ($Message->"reply_to_message") ]->"message_id") = 1 || \
$TelegramChatActive = true) && [ :len ($Message->"text") ] > 0) do={
:if ([ $ValidateSyntax ($Message->"text") ] = true) do={
:local State "";
:local File ("tmpfs/telegram-chat/" . [ $GetRandom20CharAlNum 6 ]);