Discussão do artigo "Como criar bots para Telegram em MQL5" - página 34

 
Andrey Khatimlianskii:

Se o bot estiver no canal e tiver permissão para enviar mensagens, você poderá fazê-lo.

O bot é adicionado aos administradores do canal e tem o direito de enviar mensagens. Ele envia mensagens para o canal público, mas assim que eu o torno privado, ele começa a escrever "Bad request" (Solicitação ruim). Entendo que preciso substituir o link para o canal (para a versão pública) por um link para a versão privada do canal...? Ou como fazer isso corretamente?

 
Yevhenii Levchenko:

O bot é adicionado aos administradores do canal e tem o direito de enviar mensagens. Ele envia mensagens para o canal público, mas assim que eu o torno privado, ele começa a escrever "Bad request". Entendo que preciso substituir o link para o canal (para a versão pública) por um link para a versão privada do canal...? Ou como fazer isso corretamente?

Você está falando do canal privado?
 
Aleksei Beliakov:
Você está se referindo ao canal privado?

Sim

 
você pode enviá-lo, envie-o pelo ID do canal.
 
Aleksei Beliakov:
você pode enviá-lo, envie-o pelo ID do canal.
Muito obrigado!
 

Às vezes, ao tentar enviar uma captura de tela de um gráfico, aparece: "Error: Unknown error 5020" - o arquivo não existe. Embora ele esteja presente na pasta Files. Isso acontece algumas vezes. Às vezes, ele publica tudo em uma fileira (tenho um atraso de mais de 3 segundos entre o envio de mensagens). O algoritmo em si é o seguinte: o bot abre um gráfico, move o gráfico para a posição mais à direita, cria setas (níveis de preço), tira uma captura de tela, envia-a (depois de enviar um atraso de 3 segundos apenas ... sem que ele, por algum motivo, não queira enviá-la), exclui as setas e, após verificar a presença do arquivo, exclui-o. Ou não o exclui. Ou não o exclui. Se o bot der o erro 5020 ao enviar, a função FileIsExist retorna um valor sem sentido. Tentei definir atrasos após a criação do arquivo, mas isso não ajudou muito. Eu envio para um canal aberto. A extensão é .gif.

Essa solução é muito ruim (enviar capturas de tela como essa)? O código provavelmente está longe de ser ideal, mas por que ele não quer enviar capturas de tela? Ou melhor, às vezes ele as envia normalmente e, às vezes, não quer enviá-las de forma alguma. A Internet parece estar normal...

 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:

Às vezes, ao tentar enviar uma captura de tela de um gráfico, aparece: "Error: Unknown error 5020" - o arquivo não existe. Embora ele esteja presente na pasta Files. Isso acontece algumas vezes. Às vezes, ele publica tudo em uma fileira (tenho um atraso de mais de 3 segundos entre o envio de mensagens). O algoritmo em si é o seguinte: o bot abre um gráfico, move o gráfico para a posição mais à direita, cria setas (níveis de preço), tira uma captura de tela, envia-a (depois de enviar um atraso de 3 segundos apenas ... sem que ele, por algum motivo, não queira enviá-la), exclui as setas e, após verificar a presença do arquivo, exclui-o. Ou não o exclui. Ou não o exclui. Se o bot der o erro 5020 ao enviar, a função FileIsExist retorna um valor sem sentido. Tentei definir atrasos após a criação do arquivo, mas isso não ajudou muito. Eu envio para um canal aberto. A extensão é .gif.

Essa solução é muito ruim (enviar capturas de tela como essa)? O código provavelmente está longe de ser ideal, mas por que ele não quer enviar capturas de tela? Ou melhor, às vezes ele as envia normalmente e, às vezes, não quer enviá-las de forma alguma. A Internet parece estar normal...

Veja, houve uma discussão.

O arquivo não tem tempo para gravar, você precisa esperar.

 

Eu uso o Chat_ID e digito os dois links no MT5, mas ainda há um erro

"Error: Unknown error 1001"

Alguém sabe o que está errado? Por favor, me ajude



 
To Pui Kuen:

Obrigado, mas como posso obter o chat_id?

Encaminhar mensagem do canal privado para @getidsbot

[Excluído]  
Estou com este erro:

'SendPhoto' - nenhuma das sobrecargas pode ser aplicada à chamada de função Telegram_Bot_EA.mq5 117 24


Ao compilar o telegram_bot MT5