NEWS
[gelöst] Telegram ChatID+MsgID von Bot-Empfängern speichern
-
Hallo allerseits,
Ich bin im Moment dabei herumzuspielen und suche eine Lösung für folgendes Problem:Ich sende per Telegram-Bot eine Nachricht "Wurde die Wäsche aufgehängt?" inkl. Inline-Buttons (JA/NEIN) an mehrere User (Momentan nur mein Frauchen und ich).
Sobald einer die Wäsche aufgehängt hat, quittiert er dies durch "Ja", woraufhin er ein "Danke!" bekommt und der Telegram-Text mit den Buttons auf "Wäsche wurde aufgehängt!" geändert wird.Soweit, so gut. Bis hierhin kein Problem.
Nun möchte ich, dass die Nachricht auch bei allen anderen Teilnehmern der Bot-Benachrichtigungen geupdatet wird.
Wenn Frauchen die Wäsche aufhängt, sollen bei mir die Frage "Wurde die Wäsche aufgehängt? Ja/Nein" durch die Antwort "Wäsche wurde aufgehängt!" korrigiert werden....bzw. umgekehrt auch, falls ich mal den Weg zur Waschmaschine finde.Um das zu realisieren, muss ich mir irgendwie beim Absenden der Frage "Wurde aufgehängt?" merken, an wen die Nachricht alles ging und mit welcher MsgID dies geschah. (ChatID und Msg der Teilnehmer müssen irgendwie zwischengespeichert werden).
Und hier wird es kniffelig und ich komme nicht weiter. Wie setzt man sowas halbwegs elegant um?
Ein Workaround wäre folgendes:
- die ChatID von uns beiden bleibt scheinbar immer identisch, sofern ich das sehe....man könnte diese also statisch benutzen. Das ist nicht wirklich schön, wäre aber eine Möglichkeit.
- die "letzte" MsgID könnte man aus der BotSendMsgID auslesen kurz nachdem die Frage "Wurde aufgehängt" raus ging. Die letzte MsgID wäre dann dieser Wert -1
- Nun muss man nur noch hoffen, dass die Reihenfolge der Abarbeitung des Bots immer die gleiche bleibt... dann wäre das Problem "irgendwie" gelöst, aber nicht wirklich schön und mehr mit hoffen als mit wissen behaftet.
Da ich ein großer Freund von universell nutzbaren Lösungen bin, die evtl. auch irgendwann al wem anders dienlich sein könnten, wäre es schön, wenn es hierfür eine Lösung gäbe, die nicht auf statische ChatIDs und festgelegte Anzahl der User setzt.
Ich hänge mal meinen Bastel-Blockly-Script an und kommentiere diesen im Spoiler darunter ein wenig.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="l/Hhs}-OqimAs![DYo.E">callbackquerytext</variable> <variable id="tSZlb72TXQF59Ip}bblm">last_sender_name</variable> <variable id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</variable> </variables> <block type="procedures_defcustomnoreturn" id="`qTJ-;y={AJ[sVdW~f1/" x="288" y="-738"> <mutation statements="false"> <arg name="callbackquerytext" varid="l/Hhs}-OqimAs![DYo.E"></arg> </mutation> <field name="NAME">answercallbackquerymittext</field> <field name="SCRIPT">c2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIC8vY2hhdElkIGZ1bmt0aW9uaWVydCBuaWNodCAtIHN0YW5kIDAzLzIwMjENCiAgICAvL2NoYXRJZDogZ2V0U3RhdGUoInRlbGVncmFtLjEuY29tbXVuaWNhdGUucmVxdWVzdENoYXRJZCIpLnZhbCwNCiAgICB1c2VyOiBsYXN0X3NlbmRlcl9uYW1lLA0KICAgIGFuc3dlckNhbGxiYWNrUXVlcnk6IHsNCiAgICAgICAgdGV4dDogY2FsbGJhY2txdWVyeXRleHQsDQogICAgICAgIHNob3dBbGVydDogdHJ1ZSAvLyBPcHRpb25hbCBwYXJhbWV0ZXINCiAgICB9DQp9KTs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="l.5HJmvKSgDhA/k(8Nd#" x="913" y="-763"> <field name="COMMENT">Sende Nachricht bei Script-Start</field> <next> <block type="procedures_callcustomnoreturn" id="8~%wcY?B-a.zVb4v[S!%"> <mutation name="Telegram_Abfrage_Wäsche_aufgehängt"></mutation> <next> <block type="on_ext" id="(v7Rvt%da+1+}1OIu5U;"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="blC:9%UTQ2jY@Z#lx{@~"> <field name="oid">telegram.0.communicate.request</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="%Q7KMMnYYJxR(xO1cFuZ"> <field name="COMMENT">Variablen verarbeiten</field> <next> <block type="variables_set" id="@05QF)c1s~CvvQSRNtAI" collapsed="true"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> <value name="VALUE"> <block type="text_getSubstring" id="JP^UEo5`~=)JxXGC+#w)" inline="false"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="byETLC8e~w]`;mXmqna!"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_number" id="}?Msw=(W[QvfHPSPXW!["> <field name="NUM">2</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="2Z8KU~r:/AnJS]Yes,td" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="wCMjeY!P]5e%(C1sV:Ep"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="WI2G7cig)r*D_0V|`E_b"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="2CQjCKzN5$pjdtvq]T7^"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="Re)p[9LE1hB?vJTO]YEU"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="_B6dl|IVt|VYXH(Mm=Zg" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EpwR$`2%0-`V4;m~{zPe" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="JMg%*Mp!M]5k|_;e=?U$"> <field name="TEXT">***last_sender_name: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="l2%%t/#%DGqz(,1dJRF5"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> </block> </value> </block> </value> <next> <block type="variables_set" id="gVCtKgem;;f?9/.3!!7(" collapsed="true"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> <value name="VALUE"> <block type="text_getSubstring" id="i5eWSB[+aMfC#$e8Poh;" inline="false"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="on_source" id="x.S63u%:c%zb?9VXZK7l"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="AJ~SAHp@;WP!9x2Ec)bp" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="d},vOvJ?$skVE@SaxrEp" inline="false"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="G1:,tnL1Me^FpPM,DRj{"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="ok)Zh69Ds4XsXpm:7!{!"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="UOLiY%(e5NVj3-CkuqFY"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="GJOcG8p0H9LEzoMU{A07" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="x3v??K^S*u{.EXX|Ea9r" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="6%E~Mfe`m)UvGXwj2CQ{"> <field name="TEXT">***last_received_request: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="AmX#Ajim8sF`e/wKxgYF"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> </block> </value> <next> <block type="comment" id=";;/H{UC!K`AccYBLrbaV"> <field name="COMMENT">### Verarbeitung ###</field> <next> <block type="controls_if" id="`W9kjvMAvYe2l1lH4;}7"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="/e$G{#tEL7c42?zJMfC)"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="K;___=jmMpr.Z|F7svO|"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="UEIRsAWNKBn~d^a3wi=|"> <field name="TEXT">Wäsche_Wurde_AufgehängtJa</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="V0fEr,CAW0xVJ7-%9UbQ"> <mutation name="Telegram_Antwort_Wäsche_aufgehängt"></mutation> <next> <block type="procedures_callcustomnoreturn" id="iA;,Ns.DTMU*_GPnh]N+"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="d983t4(7APF?R}0Qah4b"> <field name="TEXT">Sehr schön! 😊</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="y#x@)wrX,@?KxjQ7b.-N"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="{g;.+Nn=2wZyLb#vZn_p"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="IUO~}-[q/yo^R0HDz(|,"> <field name="TEXT">Wäsche_Wurde_AufgehängtNein</field> </block> </value> </block> </value> <statement name="DO1"> <block type="procedures_callcustomnoreturn" id="=+Vc/kRL{O*qs/Bd_f@z"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="`C2fGg|`dMvK)G98%`WC"> <field name="TEXT">Tjoar..dann eben nicht 🤷</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="m()l~;8~p9[=w2(I|U|k" x="288" y="-687"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Abfrage_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gU2VuZGV0IGVpbiBCdXR0b24tTWVuw7wgw7xiZXIgZGVuIFRlbGVncmFtLUJvdA0KY29uc29sZS5sb2coJyoqKlRlbGVncmFtOiBXdXJkZSBkaWUgV8Okc2NoZSBhdWZnZWjDpG5ndD8nKTsNCnNlbmRUbygndGVsZWdyYW0uMCcsIHsNCiAgICB0ZXh0OiAiV3VyZGUgZGllIFfDpHNjaGUgYXVmZ2Vow6RuZ3Q/IiwNCiAgICByZXBseV9tYXJrdXA6IHsNCiAgICAgICAgaW5saW5lX2tleWJvYXJkOiBbDQogICAgICAgICAgICBbeyB0ZXh0OiAnSmEnLCBjYWxsYmFja19kYXRhOiAnV8Okc2NoZV9XdXJkZV9BdWZnZWjDpG5ndEphJyB9LHsgdGV4dDogJ05laW4nLCBjYWxsYmFja19kYXRhOiAnV8Okc2NoZV9XdXJkZV9BdWZnZWjDpG5ndE5laW4nIH1dLA0KICAgICAgICBdDQogICAgfQ0KfSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="Qt[{0Ir(rV]7ah:NrW=S" x="288" y="-638"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Antwort_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gTMO2c2NoZSBkaWUgQnV0dG9ucyBiZWkgYWxsZW4gVXNlcm4NCmNvbnNvbGUubG9nKCcqKipUZWxlZ3JhbTogRGllIFfDpHNjaGUgd3VyZGUgYXVmZ2Vow6RuZ3QhJyk7DQpzZW5kVG8oJ3RlbGVncmFtLjAnLCB7DQogICAgdGV4dDogJ0RpZSBXw6RzY2hlIHd1cmRlIGF1ZmdlaMOkbmd0IScsDQogICAgZWRpdE1lc3NhZ2VUZXh0OiB7DQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIC8vSGllciBtw7xzc3RlbiBkaWUgendpc2NoZW5nZXNwZWljaGVydGVuIFdlcnRlIGRlciBDaGF0SUQgbWl0IHp1Z2Vow7ZyaWdlciBNc2dJRCBkcmluIHN0ZWhlbg0KICAgICAgICAgICAgY2hhdF9pZDogZ2V0U3RhdGUoInRlbGVncmFtLjAuY29tbXVuaWNhdGUucmVxdWVzdENoYXRJZCIpLnZhbCwNCiAgICAgICAgICAgIG1lc3NhZ2VfaWQ6IGdldFN0YXRlKCJ0ZWxlZ3JhbS4wLmNvbW11bmljYXRlLnJlcXVlc3RNZXNzYWdlSWQiKS52YWwNCiAgICAgICAgfQ0KICAgIH0NCn0pOw0KDQovL0RpZXNlciBrb21wbGV0dGUgVGVpbCBtdXNzIG1laHJmYWNoIGFiZ2VhcmJlaWV0IHdlcmRlbiAtIGpld2VpbHMgbWl0IGRlciBrb3JyZWt0ZW4gQ2hhdElEIHVuZCBNc2dJRCBkZXIgdmVyc2NoaWVkZW5lbiBVc2Vy</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="Kb]?I+=1vw`XJkKs51`K" x="113" y="-563"> <field name="COMMENT">Nur für Testzwecke</field> <next> <block type="on_ext" id="EqUQDx,#~_K}v303_W|h"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="zVVBTh4/Ujr/eO.?j8@J"> <field name="oid">telegram.0.communicate.botSendChatId</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="1fv?8@%d3(otkNku=-87"> <field name="oid">telegram.0.communicate.botSendMessageId</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="g!))}yJgM?_n]mMO8mui"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="@ftN/ju$Sy{-bw[]DdU(" inline="false"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="}_-TyB}g`=tXj^RKaIoz"> <field name="TEXT">###***bot send chatID: </field> </block> </value> <value name="ADD1"> <block type="get_value" id="@~1u31WeExN;lsU!Rq]u"> <field name="ATTR">val</field> <field name="OID">telegram.0.communicate.botSendChatId</field> </block> </value> </block> </value> <next> <block type="debug" id="Gn+3kn}QU-J3evIl`sK;"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="R2LMc(9jl:W#/y*NITKR" inline="false"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="?ft$fAoYisnrTu1t5o:S"> <field name="TEXT">###***bot send MsgID: </field> </block> </value> <value name="ADD1"> <block type="get_value" id="6),y==.^q;9enhe-.]P)"> <field name="ATTR">val</field> <field name="OID">telegram.0.communicate.botSendMessageId</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </xml>
Anbei auch noch ein kleiner Screenshot der Log, welcher zeigt, dass MsgID und ChatID leider nicht zeitgleich aktualisiert werden:
-
@foodfighter Im Telegram-Adapter bzw in der Instanz unter Nachrichten:
damit erhält man:ein json zu jeder messageid. Die kannst du dann in einem eigenen Objekt speichern und verarbeiten.
-
@mcu danke für den Ansatz,
aber wirklich weiter bringt mich der leider nicht.Ich muss ja zwischenspeichern, an welche ChatIDs und MessageIDs der Bot die Anfrage "Wurde die Wäsche aufgehängt?" raus geschickt hat (um dort im Nachhinein die ursprüngliche Anfrage durch "Wäsche wurde aufgehängt!" zu überschreiben).
Im requestRaw-Objekt erhalte ich ja "nur" Daten der zuletzt empfangen Nachrich/Request.
Alles was hierzu interessant ist, ist die ChatID und die MsgID für die direkte Antwort "Danke!" oder "Dann eben nicht" - die beiden IDs hat man bereits in eigenen Objekten.Vielleicht stehe ich auf dem Schlauch, aber ich glaube das hilft mir nicht weiter.
Was jedoch helfen könnte wäre das Telegram-Objekt "users"...hier könnte man die Anzahl und Chat-IDs der Users raus parsen.
Wenn man jetzt noch raus bekommt, ob die Reihenfolge der User-Abarbeitung immer die gleiche ist und dann auch noch der Reihenfolge der User im User-Objekt entspricht, könnte man sich kurz nach dem Absenden der Frage "Wurde Wäsche aufgehängt?" direkt die letzte MsgID des Bots in ein Objekt schreiben bzw. Merken.
Wenn dann das Aufhängen der Wäsche von jemanden quittiert wird, könnte man mit dieser MsgID beim letzten User (ChatID) anfangen das MsgUpdate raus zu senden, so User für User abarbeiten und die MsgID jeweils -1 runter zählen (vorausgesetzt die ID erhöht sich bei jedem Absenden des Bots wirklich immer um exakt 1 pro User)
...das wäre wieder viel "könnte" und "sollte" ... dazu müsste man vermutlich den kompletten Telegram-Adapter auf github studieren und sich über dessen Gesetzmäßigkeiten schlau machen (oder kennt den exakten Ablauf beim Nachrichtenversand des Bots in Bezug auf Reihenfolge der User und Aufzählung der MsgIDs zufällig sogar jemand aus dem Stegreif?) -
@foodfighter ich glaub du machst es dir viel zu schwer statisch hin oder her.... der telegram adapter schickt wenn du keine user angibst pauschal eh an alle users ansonsten hat der adapter einen state users
den kannst du abfragen mitgetState('telegram.0.communicate.users'/).val;
der enthält alle users den könntest du verwenden , wenn du da einen user nicht verwendet willst filterst du einen raus oder nimmst ne eigene liste mit der entsprechenden IDs an den du du senden möchtest
zb.sendTo('telegram.0', { text: "TestList", chatId: "UserID1"});
Wenn du jetzt an alle User raus schreibst "wäsche aufhängen!"
mit z.b.sendTo('telegram.0', { text: "Wäsche abhängen"});
und ein user antwortet "erledigt"
dann guckst du wer "erledigt" geschrieben hat, dass steht im State des Adapters
im Object : telegram.0.communicate.requestChatId
diese ID nimmst du um zu antworten:let ID = getState('telegram.0.communicate.requestChatId').val; sendTo('telegram.0', { text: "danke", chatId:ID});
wenn du jetzt allen anderen user schreiben möchtest wurde abgehängt dann einfach die Liste der user filtern:
const allUsers =JSON.parse( getState('telegram.0.communicate.users').val); const userIDs = Object.keys(allUsers); let lastID = getState('telegram.0.communicate.requestChatId').val; const filterList = userIDs.filter((id) => id != lastID); filterList.forEach((id)=>{ sendTo('telegram.0', { text:"wude aufgehängt", chatId:id}); });
viele grüße
-
@nahasapee
Danke auch für deinen Ansatz.Ich versuche mich nochmal anders auszudrücken:
Sobald einer die Wäsche aufgehängt und quittiert hat, möchte ich nicht eine neue Nachricht an alle schicken, ich will die bestehende Anfrage bearbeiten:
sendTo('telegram.0', { text: 'Die Wäsche wurde aufgehängt!', editMessageText: { options: { chat_id: *ChatID von User1*, message_id: *MsgID von Anfrage an User1* } } });
~ Wiederholen mit den ChatID + MsgID von User2 ~
Damit das funktioniert, muss ich mir irgendwie merken, an welche ChatID die Anfrage "Wurde aufgehängt?" mit welcher MsgID raus ging.
Im Screenshot vom ersten Beitrag war das
ChatID ...5521 - MsgID 1295 und
ChatID ...4560 - MsgID 1296Das heißt, dass folgender Script die Anfrage über den Bot an alle User raus schickt, bei jedem User (mit zugehöriger ChatID) aber eine andere MsgID hat!:
sendTo('telegram.0', { text: "Wurde die Wäsche aufgehängt?", reply_markup: { inline_keyboard: [ [{ text: 'Ja', callback_data: 'Wäsche_Wurde_AufgehängtJa' },{ text: 'Nein', callback_data: 'Wäsche_Wurde_AufgehängtNein' }], ] } });
Irgendwie muss ich mir also zwischenspeichern, an welche ChatID die Nachricht "Wurde augfehängt?" welche MsgID hatte.
In Telegram soll das also folgendermaßen aussehen:
Schritt 1: Anfrage wird an alle gesendet:
Schritt 2: Sobald EIN User Quittiert, soll aus der Anfrage bei ALLEN Usern die Nachricht der Anfrage zu "Wäsche wurde aufgehängt!" werden (Die Buttons sollen verschwinden, der Text soll sich ändern...es soll keine neue Nachricht im Chat erscheinen! (um den Chat aufgeräumt zu halten)...das wäre ja einfach ) :
Leider ist es nicht so, dass die Abarbeitung der User eine feste Reihenfolge haben...
Sobald die Frage "Wurde aufgehängt?" raus geht, bekommt teilweise User1 und teilweise User2 die "erste" MsgID
(Bsp.
Bot->User2: MsgID=1750
Bot->User1: MsgID=1751
...beim Nächsten mal dann
Bot->User1: MsgID=1752
Bot->User2: MsgID=1753
)Wenn wenigstens das gleich wäre, würde folgender Script schon funktionieren (vllt trägt der auch nochmal zum Verständnis meines Vorhabens bei):
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="l/Hhs}-OqimAs![DYo.E">callbackquerytext</variable> <variable id="@Ge$`9Uzwc7wh3bOp,|s">ChatID_Markus</variable> <variable id="UjOxi^;`~CUn-}-P3@b,">ChatID_Johanna</variable> <variable type="timeout" id="timeout">timeout</variable> <variable id="tSZlb72TXQF59Ip}bblm">last_sender_name</variable> <variable id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</variable> </variables> <block type="procedures_defcustomnoreturn" id="`qTJ-;y={AJ[sVdW~f1/" x="288" y="-738"> <mutation statements="false"> <arg name="callbackquerytext" varid="l/Hhs}-OqimAs![DYo.E"></arg> </mutation> <field name="NAME">answercallbackquerymittext</field> <field name="SCRIPT">c2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIC8vY2hhdElkIGZ1bmt0aW9uaWVydCBuaWNodCAtIHN0YW5kIDAzLzIwMjENCiAgICAvL2NoYXRJZDogZ2V0U3RhdGUoInRlbGVncmFtLjEuY29tbXVuaWNhdGUucmVxdWVzdENoYXRJZCIpLnZhbCwNCiAgICB1c2VyOiBsYXN0X3NlbmRlcl9uYW1lLA0KICAgIGFuc3dlckNhbGxiYWNrUXVlcnk6IHsNCiAgICAgICAgdGV4dDogY2FsbGJhY2txdWVyeXRleHQsDQogICAgICAgIHNob3dBbGVydDogdHJ1ZSAvLyBPcHRpb25hbCBwYXJhbWV0ZXINCiAgICB9DQp9KTs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="l.5HJmvKSgDhA/k(8Nd#" x="913" y="-763"> <field name="COMMENT">Sende Nachricht bei Script-Start</field> <next> <block type="procedures_callcustomnoreturn" id="8~%wcY?B-a.zVb4v[S!%"> <mutation name="Telegram_Abfrage_Wäsche_aufgehängt"></mutation> <next> <block type="variables_set" id="@t{pxlyH:czXCd;~Z`Ma"> <field name="VAR" id="@Ge$`9Uzwc7wh3bOp,|s">ChatID_Markus</field> <value name="VALUE"> <block type="math_number" id="v|y]y2EGL1KnMvxYcwB8"> <field name="NUM">4560</field> </block> </value> <next> <block type="variables_set" id="iN3z`25~U}EWqDOTM-}6"> <field name="VAR" id="UjOxi^;`~CUn-}-P3@b,">ChatID_Johanna</field> <value name="VALUE"> <block type="math_number" id="_,;VGj8otq$H!F2-P|~F"> <field name="NUM">5521</field> </block> </value> <next> <block type="timeouts_settimeout" id="o2AbY~WZhS3ZyRMoUL_6"> <field name="NAME">timeout</field> <field name="DELAY">1500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="%B8Tr6lvVk|Y:v4)}iix"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Waschmaschine.WäscheAufgehängtLastBotSendMsgID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="+s?KL2_-miQG9S$/}~`d"> <field name="ATTR">val</field> <field name="OID">telegram.0.communicate.botSendMessageId</field> </block> </value> </block> </statement> <next> <block type="comment" id="|]aZ}%yY]V}BYG3N1v~p"> <field name="COMMENT">Abarbeitung der Telegram-Requests</field> <next> <block type="on_ext" id="(v7Rvt%da+1+}1OIu5U;"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="blC:9%UTQ2jY@Z#lx{@~"> <field name="oid">telegram.0.communicate.request</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="%Q7KMMnYYJxR(xO1cFuZ"> <field name="COMMENT">Variablen verarbeiten</field> <next> <block type="variables_set" id="@05QF)c1s~CvvQSRNtAI" collapsed="true"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> <value name="VALUE"> <block type="text_getSubstring" id="JP^UEo5`~=)JxXGC+#w)" inline="false"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="byETLC8e~w]`;mXmqna!"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_number" id="}?Msw=(W[QvfHPSPXW!["> <field name="NUM">2</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="2Z8KU~r:/AnJS]Yes,td" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="wCMjeY!P]5e%(C1sV:Ep"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="WI2G7cig)r*D_0V|`E_b"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="2CQjCKzN5$pjdtvq]T7^"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="Re)p[9LE1hB?vJTO]YEU"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="_B6dl|IVt|VYXH(Mm=Zg" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EpwR$`2%0-`V4;m~{zPe" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="JMg%*Mp!M]5k|_;e=?U$"> <field name="TEXT">***last_sender_name: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="l2%%t/#%DGqz(,1dJRF5"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> </block> </value> </block> </value> <next> <block type="variables_set" id="gVCtKgem;;f?9/.3!!7(" collapsed="true"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> <value name="VALUE"> <block type="text_getSubstring" id="i5eWSB[+aMfC#$e8Poh;" inline="false"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="on_source" id="x.S63u%:c%zb?9VXZK7l"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="AJ~SAHp@;WP!9x2Ec)bp" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="d},vOvJ?$skVE@SaxrEp" inline="false"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="G1:,tnL1Me^FpPM,DRj{"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="ok)Zh69Ds4XsXpm:7!{!"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="UOLiY%(e5NVj3-CkuqFY"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="GJOcG8p0H9LEzoMU{A07" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="x3v??K^S*u{.EXX|Ea9r" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="6%E~Mfe`m)UvGXwj2CQ{"> <field name="TEXT">***last_received_request: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="AmX#Ajim8sF`e/wKxgYF"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> </block> </value> <next> <block type="comment" id=";;/H{UC!K`AccYBLrbaV"> <field name="COMMENT">### Verarbeitung ###</field> <next> <block type="controls_if" id="`W9kjvMAvYe2l1lH4;}7"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="/e$G{#tEL7c42?zJMfC)"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="K;___=jmMpr.Z|F7svO|"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="UEIRsAWNKBn~d^a3wi=|"> <field name="TEXT">Wäsche_Wurde_AufgehängtJa</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="V0fEr,CAW0xVJ7-%9UbQ"> <mutation name="Telegram_Antwort_Wäsche_aufgehängt"></mutation> <next> <block type="procedures_callcustomnoreturn" id="iA;,Ns.DTMU*_GPnh]N+"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="d983t4(7APF?R}0Qah4b"> <field name="TEXT">Sehr schön! 😊</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="y#x@)wrX,@?KxjQ7b.-N"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="{g;.+Nn=2wZyLb#vZn_p"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="IUO~}-[q/yo^R0HDz(|,"> <field name="TEXT">Wäsche_Wurde_AufgehängtNein</field> </block> </value> </block> </value> <statement name="DO1"> <block type="procedures_callcustomnoreturn" id="=+Vc/kRL{O*qs/Bd_f@z"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="`C2fGg|`dMvK)G98%`WC"> <field name="TEXT">Tjoar..dann eben nicht 🤷</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="m()l~;8~p9[=w2(I|U|k" x="288" y="-687"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Abfrage_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gU2VuZGV0IGVpbiBCdXR0b24tTWVuw7wgw7xiZXIgZGVuIFRlbGVncmFtLUJvdA0KY29uc29sZS5sb2coJyoqKlRlbGVncmFtOiBXdXJkZSBkaWUgV8Okc2NoZSBhdWZnZWjDpG5ndD8nKTsNCnNlbmRUbygndGVsZWdyYW0uMCcsIHsNCiAgICB0ZXh0OiAiV3VyZGUgZGllIFfDpHNjaGUgYXVmZ2Vow6RuZ3Q/IiwNCiAgICByZXBseV9tYXJrdXA6IHsNCiAgICAgICAgaW5saW5lX2tleWJvYXJkOiBbDQogICAgICAgICAgICBbeyB0ZXh0OiAnSmEnLCBjYWxsYmFja19kYXRhOiAnV8Okc2NoZV9XdXJkZV9BdWZnZWjDpG5ndEphJyB9LHsgdGV4dDogJ05laW4nLCBjYWxsYmFja19kYXRhOiAnV8Okc2NoZV9XdXJkZV9BdWZnZWjDpG5ndE5laW4nIH1dLA0KICAgICAgICBdDQogICAgfQ0KfSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="Qt[{0Ir(rV]7ah:NrW=S" x="288" y="-638"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Antwort_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gTMO2c2NoZSBkaWUgQnV0dG9ucyBiZWkgYWxsZW4gVXNlcm4NCmNvbnNvbGUubG9nKCcqKipUZWxlZ3JhbTogRGllIFfDpHNjaGUgd3VyZGUgYXVmZ2Vow6RuZ3QhJyk7DQoNCi8vIFp1ZXJzdCBiZWkgSm9oYW5uYQ0Kc2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIHRleHQ6ICdEaWUgV8Okc2NoZSB3dXJkZSBhdWZnZWjDpG5ndCEnLA0KICAgIGVkaXRNZXNzYWdlVGV4dDogew0KICAgICAgICBvcHRpb25zOiB7DQogICAgICAgICAgICBjaGF0X2lkOiBDaGF0SURfSm9oYW5uYSwNCiAgICAgICAgICAgIG1lc3NhZ2VfaWQ6IGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuV2FzY2htYXNjaGluZS5Xw6RzY2hlQXVmZ2Vow6RuZ3RMYXN0Qm90U2VuZE1zZ0lEIikudmFsDQogICAgICAgIH0NCiAgICB9DQp9KTsNCg0KLy8gRGFubiBiZWkgTWFya3VzDQpzZW5kVG8oJ3RlbGVncmFtLjAnLCB7DQogICAgdGV4dDogJ0RpZSBXw6RzY2hlIHd1cmRlIGF1ZmdlaMOkbmd0IScsDQogICAgZWRpdE1lc3NhZ2VUZXh0OiB7DQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIGNoYXRfaWQ6IENoYXRJRF9NYXJrdXMsDQogICAgICAgICAgICBtZXNzYWdlX2lkOiBnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLldhc2NobWFzY2hpbmUuV8Okc2NoZUF1ZmdlaMOkbmd0TGFzdEJvdFNlbmRNc2dJRCIpLnZhbCAtIDENCiAgICAgICAgfQ0KICAgIH0NCn0pOw0K</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
Interessant ist da hauptsächlich die Antwort:
// Lösche die Buttons bei allen Usern console.log('***Telegram: Die Wäsche wurde aufgehängt!'); // Zuerst bei Johanna sendTo('telegram.0', { text: 'Die Wäsche wurde aufgehängt!', editMessageText: { options: { chat_id: ChatID_Johanna, message_id: getState("0_userdata.0.Waschmaschine.WäscheAufgehängtLastBotSendMsgID").val } } }); // Dann bei Markus sendTo('telegram.0', { text: 'Die Wäsche wurde aufgehängt!', editMessageText: { options: { chat_id: ChatID_Markus, message_id: getState("0_userdata.0.Waschmaschine.WäscheAufgehängtLastBotSendMsgID").val - 1 } } });
Die beiden ChatIDs sind statisch hinterlegt und die letzte MsgID auf die der Bot gesendet hat, wird in ein Objekt gespeichert, 1,5s nachdem die Frage raus geht.
Ich hatte die Hoffnung, dass die Abarbeitungsreihenfolge der User immer identisch ist -> in dem Beispiel Markus also immer die erste und Johanna die letzte MsgID vom Bot bekommt
Dem ist leider nicht so - die Riehenfolge variiert. -
@foodfighter Wenn du jedem User die Nachricht einzeln und mit einer Zeitverzögerung schickst, gibst du doch selber die Reihenfolge vor?
-
@mcu
Jawoll....manchmal sieht man den Wald wirklich nicht mehrMir kam die gleiche Idee auch gerade.
So funktioniert alles:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="l/Hhs}-OqimAs![DYo.E">callbackquerytext</variable> <variable id="@Ge$`9Uzwc7wh3bOp,|s">ChatID_Markus</variable> <variable id="UjOxi^;`~CUn-}-P3@b,">ChatID_Johanna</variable> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> <variable id="tSZlb72TXQF59Ip}bblm">last_sender_name</variable> <variable id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</variable> </variables> <block type="procedures_defcustomnoreturn" id="`qTJ-;y={AJ[sVdW~f1/" x="288" y="-738"> <mutation statements="false"> <arg name="callbackquerytext" varid="l/Hhs}-OqimAs![DYo.E"></arg> </mutation> <field name="NAME">answercallbackquerymittext</field> <field name="SCRIPT">c2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIC8vY2hhdElkIGZ1bmt0aW9uaWVydCBuaWNodCAtIHN0YW5kIDAzLzIwMjENCiAgICAvL2NoYXRJZDogZ2V0U3RhdGUoInRlbGVncmFtLjEuY29tbXVuaWNhdGUucmVxdWVzdENoYXRJZCIpLnZhbCwNCiAgICB1c2VyOiBsYXN0X3NlbmRlcl9uYW1lLA0KICAgIGFuc3dlckNhbGxiYWNrUXVlcnk6IHsNCiAgICAgICAgdGV4dDogY2FsbGJhY2txdWVyeXRleHQsDQogICAgICAgIHNob3dBbGVydDogdHJ1ZSAvLyBPcHRpb25hbCBwYXJhbWV0ZXINCiAgICB9DQp9KTs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="l.5HJmvKSgDhA/k(8Nd#" x="913" y="-763"> <field name="COMMENT">Sende Nachricht bei Script-Start</field> <next> <block type="variables_set" id="@t{pxlyH:czXCd;~Z`Ma"> <field name="VAR" id="@Ge$`9Uzwc7wh3bOp,|s">ChatID_Markus</field> <value name="VALUE"> <block type="math_number" id="v|y]y2EGL1KnMvxYcwB8"> <field name="NUM">***4560</field> </block> </value> <next> <block type="variables_set" id="iN3z`25~U}EWqDOTM-}6"> <field name="VAR" id="UjOxi^;`~CUn-}-P3@b,">ChatID_Johanna</field> <value name="VALUE"> <block type="math_number" id="_,;VGj8otq$H!F2-P|~F"> <field name="NUM">***5521</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="8~%wcY?B-a.zVb4v[S!%"> <mutation name="Telegram_Abfrage_Markus_Wäsche_aufgehängt"></mutation> <next> <block type="timeouts_settimeout" id="o2AbY~WZhS3ZyRMoUL_6"> <field name="NAME">timeout</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="%B8Tr6lvVk|Y:v4)}iix"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Waschmaschine.WäscheAufgehängtLastBotSendMsgIDToMarkus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="+s?KL2_-miQG9S$/}~`d"> <field name="ATTR">val</field> <field name="OID">telegram.0.communicate.botSendMessageId</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="{yX1vaY/(n;ylP$w*H-p"> <mutation name="Telegram_Abfrage_Johanna_Wäsche_aufgehängt"></mutation> <next> <block type="timeouts_settimeout" id="im$4/bNRAHOBfbF|*9EB"> <field name="NAME">timeout2</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="3yPljD9h5,J/7jDzhwFq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Waschmaschine.WäscheAufgehängtLastBotSendMsgIDToJohanna</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="X18Sgs0-%F[dbOh@mxyt"> <field name="ATTR">val</field> <field name="OID">telegram.0.communicate.botSendMessageId</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="|]aZ}%yY]V}BYG3N1v~p"> <field name="COMMENT">Abarbeitung der Telegram-Requests</field> <next> <block type="on_ext" id="(v7Rvt%da+1+}1OIu5U;"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="blC:9%UTQ2jY@Z#lx{@~"> <field name="oid">telegram.0.communicate.request</field> </shadow> </value> <statement name="STATEMENT"> <block type="comment" id="%Q7KMMnYYJxR(xO1cFuZ"> <field name="COMMENT">Variablen verarbeiten</field> <next> <block type="variables_set" id="@05QF)c1s~CvvQSRNtAI" collapsed="true"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> <value name="VALUE"> <block type="text_getSubstring" id="JP^UEo5`~=)JxXGC+#w)" inline="false"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="on_source" id="byETLC8e~w]`;mXmqna!"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_number" id="}?Msw=(W[QvfHPSPXW!["> <field name="NUM">2</field> </block> </value> <value name="AT2"> <block type="math_arithmetic" id="2Z8KU~r:/AnJS]Yes,td" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="wCMjeY!P]5e%(C1sV:Ep"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="WI2G7cig)r*D_0V|`E_b"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="2CQjCKzN5$pjdtvq]T7^"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="Re)p[9LE1hB?vJTO]YEU"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="_B6dl|IVt|VYXH(Mm=Zg" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EpwR$`2%0-`V4;m~{zPe" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="JMg%*Mp!M]5k|_;e=?U$"> <field name="TEXT">***last_sender_name: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="l2%%t/#%DGqz(,1dJRF5"> <field name="VAR" id="tSZlb72TXQF59Ip}bblm">last_sender_name</field> </block> </value> </block> </value> <next> <block type="variables_set" id="gVCtKgem;;f?9/.3!!7(" collapsed="true"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> <value name="VALUE"> <block type="text_getSubstring" id="i5eWSB[+aMfC#$e8Poh;" inline="false"> <mutation at1="true" at2="false"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">LAST</field> <value name="STRING"> <block type="on_source" id="x.S63u%:c%zb?9VXZK7l"> <field name="ATTR">state.val</field> </block> </value> <value name="AT1"> <block type="math_arithmetic" id="AJ~SAHp@;WP!9x2Ec)bp" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="d},vOvJ?$skVE@SaxrEp" inline="false"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="G1:,tnL1Me^FpPM,DRj{"> <field name="ATTR">state.val</field> </block> </value> <value name="FIND"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text"> <field name="TEXT">abc</field> </shadow> <block type="text" id="ok)Zh69Ds4XsXpm:7!{!"> <field name="TEXT">]</field> </block> </value> </block> </value> <value name="B"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_number" id="UOLiY%(e5NVj3-CkuqFY"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="GJOcG8p0H9LEzoMU{A07" inline="true" collapsed="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="x3v??K^S*u{.EXX|Ea9r" inline="true"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="6%E~Mfe`m)UvGXwj2CQ{"> <field name="TEXT">***last_received_request: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="AmX#Ajim8sF`e/wKxgYF"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> </block> </value> <next> <block type="comment" id=";;/H{UC!K`AccYBLrbaV"> <field name="COMMENT">### Verarbeitung ###</field> <next> <block type="controls_if" id="`W9kjvMAvYe2l1lH4;}7"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="/e$G{#tEL7c42?zJMfC)"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="K;___=jmMpr.Z|F7svO|"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="UEIRsAWNKBn~d^a3wi=|"> <field name="TEXT">Wäsche_Wurde_AufgehängtJa</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="V0fEr,CAW0xVJ7-%9UbQ"> <mutation name="Telegram_Antwort_Wäsche_aufgehängt"></mutation> <next> <block type="procedures_callcustomnoreturn" id="iA;,Ns.DTMU*_GPnh]N+"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="d983t4(7APF?R}0Qah4b"> <field name="TEXT">Sehr schön! 😊</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="y#x@)wrX,@?KxjQ7b.-N"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="{g;.+Nn=2wZyLb#vZn_p"> <field name="VAR" id="/z$M|cJ8NyfG~@5RN0hr">last_received_request</field> </block> </value> <value name="B"> <block type="text" id="IUO~}-[q/yo^R0HDz(|,"> <field name="TEXT">Wäsche_Wurde_AufgehängtNein</field> </block> </value> </block> </value> <statement name="DO1"> <block type="procedures_callcustomnoreturn" id="=+Vc/kRL{O*qs/Bd_f@z"> <mutation name="answercallbackquerymittext"> <arg name="callbackquerytext"></arg> </mutation> <value name="ARG0"> <block type="text" id="`C2fGg|`dMvK)G98%`WC"> <field name="TEXT">Tjoar..dann eben nicht 🤷</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defcustomnoreturn" id="m()l~;8~p9[=w2(I|U|k" x="288" y="-687"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Abfrage_Markus_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gU2VuZGV0IGVpbiBCdXR0b24tTWVuw7wgw7xiZXIgZGVuIFRlbGVncmFtLUJvdA0KY29uc29sZS5sb2coJyoqKlRlbGVncmFtOiBXdXJkZSBkaWUgV8Okc2NoZSBhdWZnZWjDpG5ndD8nKTsNCnNlbmRUbygndGVsZWdyYW0uMCcsIHsNCiAgICBjaGF0SWQ6IENoYXRJRF9NYXJrdXMsDQogICAgdGV4dDogIld1cmRlIGRpZSBXw6RzY2hlIGF1ZmdlaMOkbmd0PyIsDQogICAgcmVwbHlfbWFya3VwOiB7DQogICAgICAgIGlubGluZV9rZXlib2FyZDogWw0KICAgICAgICAgICAgW3sgdGV4dDogJ0phJywgY2FsbGJhY2tfZGF0YTogJ1fDpHNjaGVfV3VyZGVfQXVmZ2Vow6RuZ3RKYScgfSx7IHRleHQ6ICdOZWluJywgY2FsbGJhY2tfZGF0YTogJ1fDpHNjaGVfV3VyZGVfQXVmZ2Vow6RuZ3ROZWluJyB9XSwNCiAgICAgICAgXQ0KICAgIH0NCn0pOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="D)k`HZIn/HRvQ/*G(4_~" x="288" y="-663"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Abfrage_Johanna_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gU2VuZGV0IGVpbiBCdXR0b24tTWVuw7wgw7xiZXIgZGVuIFRlbGVncmFtLUJvdA0KY29uc29sZS5sb2coJyoqKlRlbGVncmFtOiBXdXJkZSBkaWUgV8Okc2NoZSBhdWZnZWjDpG5ndD8nKTsNCnNlbmRUbygndGVsZWdyYW0uMCcsIHsNCiAgICBjaGF0SWQ6IENoYXRJRF9Kb2hhbm5hLA0KICAgIHRleHQ6ICJXdXJkZSBkaWUgV8Okc2NoZSBhdWZnZWjDpG5ndD8iLA0KICAgIHJlcGx5X21hcmt1cDogew0KICAgICAgICBpbmxpbmVfa2V5Ym9hcmQ6IFsNCiAgICAgICAgICAgIFt7IHRleHQ6ICdKYScsIGNhbGxiYWNrX2RhdGE6ICdXw6RzY2hlX1d1cmRlX0F1ZmdlaMOkbmd0SmEnIH0seyB0ZXh0OiAnTmVpbicsIGNhbGxiYWNrX2RhdGE6ICdXw6RzY2hlX1d1cmRlX0F1ZmdlaMOkbmd0TmVpbicgfV0sDQogICAgICAgIF0NCiAgICB9DQp9KTs=</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_defcustomnoreturn" id="Qt[{0Ir(rV]7ah:NrW=S" x="288" y="-613"> <mutation statements="false"></mutation> <field name="NAME">Telegram_Antwort_Wäsche_aufgehängt</field> <field name="SCRIPT">Ly8gTMO2c2NoZSBkaWUgQnV0dG9ucyBiZWkgYWxsZW4gVXNlcm4NCmNvbnNvbGUubG9nKCcqKipUZWxlZ3JhbTogRGllIFfDpHNjaGUgd3VyZGUgYXVmZ2Vow6RuZ3QhJyk7DQoNCi8vIFp1ZXJzdCBiZWkgTWFya3VzDQpzZW5kVG8oJ3RlbGVncmFtLjAnLCB7DQogICAgdGV4dDogJ0RpZSBXw6RzY2hlIHd1cmRlIGF1ZmdlaMOkbmd0IScsDQogICAgZWRpdE1lc3NhZ2VUZXh0OiB7DQogICAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgICAgIGNoYXRfaWQ6IENoYXRJRF9NYXJrdXMsDQogICAgICAgICAgICBtZXNzYWdlX2lkOiBnZXRTdGF0ZSgiMF91c2VyZGF0YS4wLldhc2NobWFzY2hpbmUuV8Okc2NoZUF1ZmdlaMOkbmd0TGFzdEJvdFNlbmRNc2dJRFRvTWFya3VzIikudmFsDQogICAgICAgIH0NCiAgICB9DQp9KTsNCg0KLy8gRGFubiBiZWkgSm9oYW5uYQ0Kc2VuZFRvKCd0ZWxlZ3JhbS4wJywgew0KICAgIHRleHQ6ICdEaWUgV8Okc2NoZSB3dXJkZSBhdWZnZWjDpG5ndCEnLA0KICAgIGVkaXRNZXNzYWdlVGV4dDogew0KICAgICAgICBvcHRpb25zOiB7DQogICAgICAgICAgICBjaGF0X2lkOiBDaGF0SURfSm9oYW5uYSwNCiAgICAgICAgICAgIG1lc3NhZ2VfaWQ6IGdldFN0YXRlKCIwX3VzZXJkYXRhLjAuV2FzY2htYXNjaGluZS5Xw6RzY2hlQXVmZ2Vow6RuZ3RMYXN0Qm90U2VuZE1zZ0lEVG9Kb2hhbm5hIikudmFsDQogICAgICAgIH0NCiAgICB9DQp9KTsNCg==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
Nicht sonderlich "schön" gelöst, aber funktioniert.
Vielen Dank für eure Hilfe!