Diskussion zum Artikel "Die Erstellung des Bots für Telegram in der Sprache MQL5" - Seite 40

 
Yevhenii Levchenko:

Jedes Terminal hat seinen eigenen Telegrammkanal.

Ich glaube, das Problem ist, dass ich diesen Satz nicht verstehe. Ich kenne mich mit Telegram und Kanälen nicht sehr gut aus, können Sie das etwas genauer erklären?

 
Sergey Kasirenko:

Ich glaube, das Problem ist, dass ich diesen Satz nicht verstehe. Ich kenne mich mit Telegrammen und Kanälen nicht so gut aus. Können Sie mir das etwas genauer erklären?

In Telegram können Sie Kanäle und Gruppen erstellen. Dies ist der erste - das ist der Kanal, über den wir gerade sprechen. Obwohl man auch eine Gruppe erstellen kann, denke ich...

 
Yevhenii Levchenko:

Sie können in Telegram Kanäle und Gruppen erstellen. Die erste Möglichkeit ist ein Kanal, über den wir gerade sprechen. Obwohl man auch eine Gruppe erstellen kann, denke ich...

So, aber wie verknüpft man dann Gruppen oder Channel und das Terminal selbst? Wenn wir nicht einen Bot per api ansprechen, sondern eine Gruppe...? Ich verstehe die Struktur nicht. Jetzt ist es so, es gibt einen Chatbot, ich schreibe einen Befehl direkt an ihn, im Terminal vom Expert Advisor wird alles abgefangen, aber wenn ich es in ein anderes Terminal lege, dann funktioniert getUpdates natürlich nicht, weil es schon eine Anfrage für dieses Token gab....

Aber wie kann ich sonst Daten vom Telegram-Bot bekommen?

 
Sergey Kasirenko:

So, aber wie können wir Gruppen oder Channel und das Terminal selbst verbinden? Wenn wir den Bot nicht per API ansprechen, sondern an eine Gruppe? Ich verstehe die Struktur nicht. Jetzt wird es so gemacht, es gibt einen Chatbot, ich schreibe einen Befehl direkt an ihn, im Terminal wird alles vom Expert Advisor abgefangen, aber wenn ich es in ein anderes Terminal lege, dann funktioniert getUpdates natürlich nicht, weil es schon eine Anfrage für dieses Token gab....

Aber wie kann ich sonst Daten vom Telegram-Bot erhalten?

Du erstellst Kanäle für jedes Terminal. Oder Gruppen, das kannst du selbst herausfinden. Füge deinen Bot als Leader hinzu. Du sammelst die Kanalsymbole aus den Kanälen und schiebst sie in ein Array. Wenn du dann ein Signal erhältst, durchläufst du das Array und sendest Nachrichten an alle Kanäle. Dann fängst du die Aktualisierungen genauso auf, wie du es bei einem Kanal getan hast. Nur liest jedes Terminal seinen eigenen Kanal.

Obwohl ich es selbst noch nicht ausprobiert habe).

 
Yevhenii Levchenko:


Ich habe es allerdings selbst noch nicht ausprobiert.)

Das ist ein starkes Stück )). Aber trotzdem danke, ich werde nachdenken, graben, etwas ausprobieren

 
Sergey Kasirenko:

Liebe Forumsmitglieder, bitte sagen Sie mir, wie ich dieses Problem lösen kann

{"ok":false, "error_code":409, "description": "Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"} Wer hat das schon erlebt? Wo kann man suchen, was ist zu beachten.

Sie haben einen Fehler in der Bot-Logik.

Ich habe viele Kopien laufen und erhalte jede Sekunde Updates, ohne dass es zu Konflikten kommt. Es hat nichts mit Gruppen/Kanälen zu tun.

Geben Sie mir etwas Feedback.

 
Andrey Khatimlianskii:

Sie haben eine Art Fehler in der Logik des Bots.

Ich habe viele Kopien laufen und bekomme jede Sekunde Updates, ohne dass es zu Konflikten kommt. Es hat nichts mit Gruppen/Kanälen zu tun.

Geben Sie mir etwas Feedback.

Vielen Dank für die Antwort. Ich habe es so gemacht, wie es in dem Artikel von Andrey Voitenko beschrieben wurde. Ich habe einen Bot erstellt, durch das Token habe ich an die Nachrichten dieses Bots gebunden und erhalte sie mit der Funktion getUpdates, ich habe speziell ProcessMessages deaktiviert , in der Tat, der ganze Code sieht so aus:

//+------------------------------------------------------------------+
//| OnTimer|
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- Fehlermeldung anzeigen end exit
   if(getme_result!=0)
     {
      comment.SetText(0,"Error: "+GetErrorDescription(getme_result),clrRed);
      if(getme_result==4060) comment.SetText(1,"https://api.telegram.org",clrRed);
      comment.Show();
      return;
     }
//--- Bot-Name anzeigen
   //Kommentar("Botname: ",bot.Name()));
   if(Flag_Init)
   {
     Flag_Init=false;
     bot.UserNameFilter(sName);
     comment.SetText(0,StringFormat("%s v.%s",EXPERT_NAME,EXPERT_VERSION),clrWhite);
     //comment.SetText(1, "Bot-Name: "+bot.Name(),clrWhite);
     comment.Show();
   }  
//--- Lesen von Nachrichten
   bot.GetUpdates();
//--- Verarbeitung von Nachrichten
   //bot.ProcessMessages();
  }
//+------------------------------------------------------------------+

Und es stellt sich heraus, dass, sobald ich zwei Kopien dieser Bot (jetzt für die Einfachheit des Experiments in der gleichen Terminal), bekomme ich diese Hut:

Ich verstehe, dass es sich herausstellt, dass man die Umfrage nicht mit dem gleichen Token aufrufen kann, wie es scheint, weil, nachdem einmal gelesen, es eine Art markiert, dass die Daten empfangen werden, und die nächste Kopie des Bots wird diesen Fehler erhalten.

Aber wie man es anders organisiert, weiß ich nicht, vielleicht haben Sie es überhaupt anders gemacht, dann teilen Sie das Geheimnis, wenn es kein Geschäftsgeheimnis ist

 
Sergey Kasirenko:

Aber wie man das alles anders organisiert, weiß ich nicht, vielleicht haben Sie es ja anders gemacht, dann teilen Sie das Geheimnis, wenn es kein Betriebsgeheimnis ist

Kommerziell, natürlich )

Ich habe Ihnen in einer privaten Nachricht geschrieben

 

Guten Abend, liebe Kollegen.

Könnten Sie mir bitte sagen, wie man Smileys in den Text einer Nachricht einfügt?

 
Andrey Kaunov:

Guten Abend, liebe Kollegen.

Könnten Sie mir bitte sagen, wie man Smileys in den Text einer Nachricht einfügt?

Ein richtiger Mann braucht ein Motorrad und eine Frau)

Nochmals verbieten, okay.