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

 
Andrey Khatimlianskii:

Wenn der Bot im Kanal ist und die Erlaubnis hat, Nachrichten zu senden, können Sie das tun.

Der Bot wird zu den Channel-Administratoren hinzugefügt und hat das Recht, Nachrichten zu senden. Er sendet Nachrichten an den öffentlichen Kanal, aber sobald ich ihn privat mache, schreibt er "Bad request". Ich verstehe, dass ich den Link zum Kanal (für die öffentliche Version) durch einen Link zur privaten Version des Kanals ersetzen muss...? Oder wie mache ich es richtig?

 
Yevhenii Levchenko:

Der Bot wird zu den Channel-Administratoren hinzugefügt und hat das Recht, Nachrichten zu senden. Er sendet Nachrichten an den öffentlichen Kanal, aber sobald ich ihn privat mache, schreibt er "Bad request". Ich verstehe, dass ich den Link zum Kanal (für die öffentliche Version) durch einen Link zur privaten Version des Kanals ersetzen muss...? Oder wie mache ich es richtig?

Meinen Sie den privaten Kanal?
 
Aleksei Beliakov:
Sie meinen den privaten Kanal?

Ja

 
Sie können es senden, senden Sie es durch Kanal-ID.
 
Aleksei Beliakov:
Sie können es senden, senden Sie es durch Kanal-ID.
Ich danke Ihnen sehr!
 

Wenn ich versuche, einen Screenshot eines Diagramms zu senden, kommt manchmal die Meldung: "Fehler: Unbekannter Fehler 5020" - die Datei existiert nicht. Obwohl sie im Ordner "Dateien" vorhanden ist. Das passiert manchmal. Manchmal veröffentlicht es alles nacheinander (ich mache mehr als 3 Sekunden Verzögerung zwischen dem Senden von Nachrichten). Der Algorithmus selbst sieht wie folgt aus: der Bot öffnet ein Diagramm, verschiebt das Diagramm an die äußerste rechte Position, erstellt Pfeile (Preisniveaus), macht einen Screenshot, sendet ihn (nach einer Verzögerung von 3 Sekunden nur ... ohne dass er es aus irgendeinem Grund nicht senden will), löscht die Pfeile und löscht sie, nachdem er geprüft hat, ob die Datei vorhanden ist. Oder löscht sie nicht. Wenn der Bot beim Senden den Fehler 5020 ausgibt, gibt die Funktion FileIsExist Unsinn zurück. Ich habe versucht, Verzögerungen nach der Dateierstellung einzustellen, aber das hat nicht viel geholfen. Ich sende an einen offenen Kanal. Die Erweiterung ist .gif.

Wie schlecht ist diese Lösung (das Senden von Screenshots auf diese Weise)? Der Code ist wahrscheinlich alles andere als ideal, aber warum will er keine Screenshots senden? Oder besser gesagt, manchmal sendet er sie normal, und manchmal will er sie gar nicht senden. Internet scheint normal zu sein...

 if(ScreenShotsAllowed) {
               long chartID = ChartOpen(symbolName,PERIOD_CURRENT);

               ResetLastError();
               if(!ChartNavigate(chartID,CHART_CURRENT_POS,WindowFirstVisibleBar())) {
                  Print ("Error at ChartNavigate: ", GetLastError());
               }

               createArrow(chartID,SymbolInfoDouble(symbolName,SYMBOL_BID),Time[0],BuyArrowCode,arrowBuy,clrDarkSlateGray);
               createArrow(chartID,SymbolInfoDouble(symbolName,SYMBOL_BID)+candleSize[i]*Target_1,Time[0],Target_1_Code,target_1,TpTargetColor);
               createArrow(chartID,SymbolInfoDouble(symbolName,SYMBOL_BID)+candleSize[i]*Target_2,Time[0],Target_2_Code,target_2,TpTargetColor);
               createArrow(chartID,SymbolInfoDouble(symbolName,SYMBOL_BID)+candleSize[i]*Target_3,Time[0],Target_3_Code,target_3,TpTargetColor);
               createArrow(chartID,low[i]-bufferSell[i],iTime(symbolName,PERIOD_CURRENT,0),SlCode,sl,SlTargetColor);

               ResetLastError();
               string filename = symbolName+fileExtension;
               PrintFormat("Filename: %s",filename);
               if(!ChartScreenShot(chartID,filename,(int)ChartGetInteger(chartID,CHART_WIDTH_IN_PIXELS,0),
                                   (int)ChartGetInteger(chartID,CHART_HEIGHT_IN_PIXELS,0),ALIGN_RIGHT)) {
                  Print ("Error at ChartScreenShot: ", GetLastError());
               } else {

                  string photo_id;
                  int result=bot.SendPhoto(photo_id,InpChannelName,filename,"screenshot");

                  if(result==0) {
                     Sleep(Delay);
                     Print("Photo ID: ",photo_id);
                     deleteObjects(chartID);
                  } else
                     Print("Error: ",GetErrorDescription(result));
                  if(FileIsExist(filename)) {
                     ResetLastError();
                     if(!FileDelete(filename)) {
                        PrintFormat("Cant delete file: %s, err code: %d",filename,GetLastError());
                     }else
                     PrintFormat("Deleted file: %s",filename);
                  }
               }

               ChartClose(chartID);
            }
 
Yevhenii Levchenko:

Wenn ich versuche, einen Screenshot eines Diagramms zu senden, kommt manchmal die Meldung: "Fehler: Unbekannter Fehler 5020" - die Datei existiert nicht. Obwohl sie im Ordner "Dateien" vorhanden ist. Das passiert manchmal. Manchmal veröffentlicht es alles nacheinander (ich mache mehr als 3 Sekunden Verzögerung zwischen dem Senden von Nachrichten). Der Algorithmus selbst sieht wie folgt aus: der Bot öffnet ein Diagramm, verschiebt das Diagramm an die äußerste rechte Position, erstellt Pfeile (Preisniveaus), macht einen Screenshot, sendet ihn (nach einer Verzögerung von 3 Sekunden nur ... ohne dass er es aus irgendeinem Grund nicht senden will), löscht die Pfeile und löscht sie, nachdem er geprüft hat, ob die Datei vorhanden ist. Oder löscht sie nicht. Wenn der Bot beim Senden den Fehler 5020 ausgibt, gibt die Funktion FileIsExist Unsinn zurück. Ich habe versucht, Verzögerungen nach der Dateierstellung einzustellen, aber das hat nicht viel geholfen. Ich sende an einen offenen Kanal. Die Erweiterung ist .gif.

Wie schlecht ist diese Lösung (das Senden von Screenshots auf diese Weise)? Der Code ist wahrscheinlich alles andere als ideal, aber warum will er keine Screenshots senden? Oder besser gesagt, manchmal sendet er sie normal, und manchmal will er sie gar nicht senden. Internet scheint normal zu sein...

Sehen Sie, es gab eine Diskussion.

Die Datei hat keine Zeit zum Aufzeichnen, Sie müssen warten.

 

Ich benutze Chat_ID und ich geben Sie die 2 Link in der MT5, aber immer noch einen Fehler

"Fehler: Unbekannter Fehler 1001"

Kann jemand wissen, was falsch ist? Bitte helfen



 
To Pui Kuen:

Danke, wie kann ich die chat_id bekommen?

Nachricht vom privaten Kanal an @getidsbot weiterleiten

[Gelöscht]  
Ich habe diesen Fehler:

'SendPhoto' - keine der Überladungen kann auf den Funktionsaufruf angewendet werden Telegram_Bot_EA.mq5 117 24


Beim Kompilieren von telegram_bot MT5