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

 
Yevhenii Levchenko:

Cada terminal tem seu próprio canal do Telegram.

Acho que o problema é que não estou entendendo essa frase. Não sou muito bom com o Telegram e com canais, você pode explicar com um pouco mais de detalhes?

 
Sergey Kasirenko:

Acho que o problema é que não estou entendendo essa frase. Não sou muito bom com telegramas e canais, você poderia explicar com um pouco mais de detalhes.

No Telegram, você pode criar canais e grupos. Este é o primeiro - este é o canal, que é o canal de que estamos falando. Embora você também possa criar um grupo, acho que...

 
Yevhenii Levchenko:

Você pode criar canais e grupos no Telegram. O primeiro é um canal, que é o canal de que estamos falando. Embora você também possa criar um grupo, acho que...

Então, como vincular grupos ou canais e o próprio terminal? Se não nos dirigirmos a um bot por meio da API, mas a um grupo...? Não entendo a estrutura. Agora é assim, há um chatbot, eu escrevo um comando diretamente para ele, no terminal pelo Expert Advisor, tudo é capturado, mas se eu o colocar em outro terminal, é claro que o getUpdates não funciona, porque já houve uma solicitação para esse token....

Mas de que outra forma posso obter dados do bot do Telegram?

 
Sergey Kasirenko:

Então, como podemos conectar grupos ou canais e o próprio terminal? Se não nos dirigirmos ao bot pela API, mas a um grupo...? Não entendo a estrutura. Agora é assim, há um chatbot, eu escrevo um comando diretamente para ele, no terminal tudo é capturado pelo Expert Advisor, mas se eu o colocar em outro terminal, é claro que o getUpdates não funciona, porque já houve uma solicitação para esse token....

Mas de que outra forma posso obter dados do bot do Telegram?

Você cria canais para cada terminal. Ou grupos, você mesmo pode descobrir isso. Adicione seu bot como líder. Você coleta os ícones de canal dos canais e os coloca em uma matriz. Então, quando receber um sinal, você percorre a matriz e envia mensagens para todos os canais. Em seguida, você recebe as atualizações da mesma forma que fez com um canal. Só que cada terminal lê seu próprio canal.

Embora eu mesmo não tenha tentado fazer isso).

 
Yevhenii Levchenko:


No entanto, eu ainda não experimentei esse método)

Essa é forte )). Mas obrigado mesmo assim, vou pensar, pesquisar, tentar algo

 
Sergey Kasirenko:

Caros membros do fórum, por favor, me digam como resolver esse problema

{"ok":false, "error_code":409, "description": "Conflict: terminated by other getUpdates request; make sure that only one bot instance is running"} Quem já encontrou isso? Onde procurar, o que verificar.

Você tem algum erro na lógica do bot.

Tenho várias cópias em execução e recebendo atualizações a cada segundo, sem conflitos. Isso não tem nada a ver com grupos/canais.

Dê-me um feedback.

 
Andrey Khatimlianskii:

Você tem algum tipo de bug na lógica do bot.

Tenho muitas cópias em execução e recebendo atualizações a cada segundo, sem conflitos. Isso não tem nada a ver com grupos/canais.

Dê-me um feedback.

Obrigado pela resposta. Fiz o que foi descrito no artigo de Andrey Voitenko. Criei um bot e, por meio do token, vinculei as mensagens desse bot e as obtive usando a função getUpdates. Desativei especificamente a função ProcessMessages; na verdade, todo o código ficou assim:

//+------------------------------------------------------------------+
//| OnTimer|
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- mostrar mensagem de erro 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;
     }
//--- mostrar o nome do bot
   //Comentário("Nome do bot: ",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();
   }  
//--- lendo mensagens
   bot.GetUpdates();
//--- processamento de mensagens
   //bot.ProcessMessages();
  }
//+------------------------------------------------------------------+

E acontece que, assim que coloco duas cópias desse bot (agora para simplificar o experimento no mesmo terminal), recebo este chapéu:

Entendo que não é possível chamar a pesquisa com o mesmo token, como parece, porque, depois de ler uma vez, ele meio que marca que os dados foram recebidos, e a próxima cópia do bot receberá esse erro.

Mas como organizar isso de forma diferente, eu não sei, talvez você tenha feito isso de forma diferente, então compartilhe o segredo, se não for um segredo comercial

 
Sergey Kasirenko:

Mas como organizar tudo de forma diferente, eu não sei, talvez você tenha feito de forma diferente, então compartilhe o segredo, se não for um segredo comercial

Comercial, é claro)

Escrevi para você em uma mensagem privada

 

Boa noite, colegas.

Vocês poderiam me dizer como adicionar smileys ao texto de uma mensagem?

 
Andrey Kaunov:

Boa noite, colegas.

Vocês poderiam me dizer como adicionar smileys ao texto de uma mensagem?

Um homem de verdade precisa de uma motocicleta e uma mulher)

Banir novamente, ok.