文章 "如何采用 MQL5 创建用于 Telegram 的 bots" - 页 34

 
Andrey Khatimlianskii:

如果机器人在频道中并有发送信息的权限,您就可以发送信息。

机器人已加入频道管理员,有权发送信息。它可以向公共频道发送信息,但一旦我将它设为私人频道,它就开始写 "Bad request(错误请求)"。我的理解是,我需要用该频道私人版本的链接来替代该频道(公共版本)的链接......?或者如何正确操作?

 
Yevhenii Levchenko:

该机器人被添加为频道管理员,有权发送信息。它向公共频道发送信息,但当我把它设为私人频道时,它就开始写 "错误请求"。我的理解是,我需要用该频道私人版本的链接来替代该频道(公共版本)的链接......?或者如何正确操作?

你说的是私人频道吗?
 
Aleksei Beliakov:
你是说私人频道?

是的

 
可以发送,按频道 ID 发送。
 
Aleksei Beliakov:
您可以通过频道 ID 发送。
非常感谢!
 

有时,在尝试发送图形截图时,系统会提示 "错误:未知错误 5020"--文件不存在。尽管它存在于文件文件夹中。这种情况有时会发生。有时它会连续发布所有信息(我在发送信息时会有超过 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:

有时,在尝试发送图形截图时,系统会提示 "错误:未知错误 5020"--文件不存在。尽管它存在于文件文件夹中。这种情况有时会发生。有时它会连续发布所有信息(我在发送信息时会有超过 3 秒的延迟)。算法本身如下:机器人打开图表,将图表移动到最右边的位置,创建箭头(价位),截图,发送(发送后延迟 3 秒钟)......如果由于某种原因不想发送),删除箭头,检查文件是否存在后将其删除。或者不删除。如果机器人在发送时报错 5020,FileIsExist 函数 就会返回无意义的结果。我试过在文件创建后设置延迟,但没什么用。我发送到一个打开的通道。扩展名为 .gif。

这个解决方案(像这样发送截图)有多糟糕?代码可能还不够理想,但为什么它不想发送截图呢?或者说,有时能正常发送,有时根本不想发送。互联网似乎是正常的...

听着,我们正在讨论。

文件没有时间记录,你需要等待。

 

我使用了 Chat_ID,并在 MT5 中键入了 2 个链接,但仍出现错误

"错误:未知错误 1001"。

有人知道出了什么问题吗?请帮助我



 
To Pui Kuen:

谢谢,如何获取聊天 ID?

将私人频道的信息转发给 @getidsbot

[删除]  
我遇到了以下错误:

SendPhoto' - 没有任何重载可应用于函数调用 Telegram_Bot_EA.mq5 117 24


编译 telegram_bot MT5 时