FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: dietzi am 25 Januar 2023, 06:48:21

Titel: TelegramBot Nachrichten automatisch löschen
Beitrag von: dietzi am 25 Januar 2023, 06:48:21
Hallo zusammen,

ich habe mir einen Dialog mit meinem TelegramBot zusammen gebaut. Gerne möchte ich, dass nach einer bestimmten Zeit die Nachrichten automatisch gelöscht werden. Aktuell löse ich das so:

Auszug aus dem notify:
if(ReadingsVal("TelegramBot","msgText","") eq "Testbefehl") {
my $empf=ReadingsVal("TelegramBot","msgPeer","");
fhem("set TelegramBot msg \@$empf Das ist ein Test");
fhem("sleep 2; {TeleDel()}");
}


Auszug aus 99_myUtils.pm
sub TeleDel() {
        my $msgID = ReadingsVal("TelegramBot","sentMsgId","");
        my $msgIDD = ReadingsVal("TelegramBot","msgId","");
        my $empf = ReadingsVal("TelegramBot","msgPeer","");
        fhem("define tmp_delete".rand()." at +00:04:56 set TelegramBot msgDelete ".$msgID." \@".$empf);
        fhem("define tmp_delete".rand()." at +00:04:56 set TelegramBot msgDelete ".$msgIDD." \@".$empf);
}


Jetzt ist es aber so, dass bei gleichzeitigen Nachrichten innerhalb der 2 Sekunden die falsche msgId "gespeichert" wird. Gibt es einen eleganteren Weg die msgId direkt nach dem Senden zu bekommen?

Ich stelle mir das in etwa so vor:
my $replyId = fhem("set TelegramBot msg \@$empf Das ist ein Test");
Titel: Antw:TelegramBot Nachrichten automatisch löschen
Beitrag von: GunterB am 27 Januar 2023, 08:31:30
Ich habe keinen Weg gefunden, um die ID der versendeten Nachrichten zweifelsfrei festzustellen.

Du könntest dir aber den versendeten Text merken (erste 5 Zeichen, oder Prüfsumme, o.ä.), und dir in einer Tablle die Nachricht merken, damit du dir die sentMsgId anhand des sentMsgText zuordnen kannst.

So habe ich das in meinen Menüs gelöst.
Titel: Antw:TelegramBot Nachrichten automatisch löschen
Beitrag von: jhohmann am 27 Januar 2023, 15:59:27
Hallo, wenn man immer genau einen Empfänger für eine Nachricht hat, werden über meinen hier beschriebenen Weg die meisten Nachrichten auch wieder gelöscht. Zumindest so um die 90%. Einige bleiben trotzdem stehen.
Und die Nachricht sollte nach unter 48 Stunden zum Löschen anstehen. Ältere lassen sich gar nicht löschen.
https://forum.fhem.de/index.php/topic,83589.msg1094055.html#msg1094055 (https://forum.fhem.de/index.php/topic,83589.msg1094055.html#msg1094055)