記事"MQL5言語でのTelegram用ボットの作成"についてのディスカッション - ページ 34

 
Andrey Khatimlianskii:

ボットがチャンネル内にいて、メッセージを送信する権限があれば、送信できます。

ボットはチャンネル管理者に追加され、メッセージを送信 する権限を持っています。公開チャンネルにメッセージを送りますが、非公開にした途端に「Bad request」と書き始めます。チャンネルへのリンク(公開版)をプライベート版チャンネルへのリンクに置き換える必要があることは理解しているのですが......?どうすればいいのでしょうか?

 
Yevhenii Levchenko:

ボットはチャンネル管理者に追加され、メッセージを送信する権利を持っている。公開チャンネルにメッセージを送りますが、非公開チャンネルにした途端、"Bad request "と書き始めます。チャンネルへのリンク(公開版)をプライベート版チャンネルへのリンクに置き換える必要があることは理解しているのですが......?どうすればいいのでしょうか?

プライベート・チャンネルのことですか?
 
Aleksei Beliakov:
プライベートチャンネルのことですか?

そうだ

 
チャンネルIDで送信してください。
 
Aleksei Beliakov:
チャンネルIDで送信してください。
ありがとうございました!
 

グラフのスクリーンショットを送信しようとすると、"Error: Unknown error 5020" - ファイルが存在しません。Filesフォルダには存在するのですが。これは時々起こります。時々、連続してすべてを公開することもあります(メッセージを送信する間に3秒以上の遅延が発生します)。アルゴリズム自体は次のようになります:ボットがチャートを開き、チャートを一番右の位置に移動し、矢印(価格レベル)を作成し、スクリーンショットを撮り、それを送信します(ちょうど3秒の遅延を送信した後....何らかの理由で送信したくない場合)、矢印を削除し、ファイルの存在を確認した後、それを削除します。または削除しません。送信時にボットがエラー5020を出した場合、FileIsExist関数は 無意味なものを返します。ファイル作成後に遅延を設定しようとしましたが、あまり役に立ちませんでした。私はオープンチャンネルに送信しています。拡張子は.gifです。

この解決策(このようなスクリーンショットの送信)はどれくらい悪いのでしょうか?コードは理想的なものとは程遠いでしょうが、なぜスクリーンショットを送ろうとしないのでしょうか?というか、普通に送れるときもあれば、まったく送ろうとしないときもある。インターネットは正常のようですが・・・。

 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:

グラフのスクリーンショットを送信しようとすると、"Error: Unknown error 5020" - ファイルが存在しません。Filesフォルダには存在するのですが。これは時々起こります。時々、連続してすべてを公開することもあります(メッセージを送信する間に3秒以上の遅延が発生します)。アルゴリズム自体は次のようになります:ボットがチャートを開き、チャートを一番右の位置に移動し、矢印(価格レベル)を作成し、スクリーンショットを撮り、それを送信します(ちょうど3秒の遅延を送信した後....何らかの理由で送信したくない場合)、矢印を削除し、ファイルの存在を確認した後、それを削除します。または削除しません。送信時にボットがエラー5020を出した場合、FileIsExist関数は 無意味なものを返します。ファイル作成後に遅延を設定しようとしましたが、あまり役に立ちませんでした。私はオープンチャンネルに送信しています。拡張子は.gifです。

この解決策(このようなスクリーンショットの送信)はどれくらい悪いのでしょうか?コードは理想的なものとは程遠いでしょうが、なぜスクリーンショットを送ろうとしないのでしょうか?というか、普通に送れるときもあれば、まったく送ろうとしないときもある。インターネットは正常のようですが・・・。

ほら、議論があった。

ファイルには記録する時間がありません、待つ必要があります。

 

私は Chat_ID を使用し、MT5 で 2 つのリンクを入力しましたが、まだエラーがあります。

"エラー:不明なエラー1001"

何が悪いのか、どなたかわかりますか?助けてください。



 
To Pui Kuen:

ありがとうございます。

プライベートチャンネルから@getidsbotにメッセージを転送してください。

削除済み  
次のエラーが発生しました:

'SendPhoto' -関数 呼び出しにオーバーロードを適用できません Telegram_Bot_EA.mq5 117 24


telegram_bot MT5 のコンパイル時