Discusión sobre el artículo "Cómo crear un bot para Telegram en el lenguaje MQL5" - página 40

 
Yevhenii Levchenko:

Cada terminal tiene su propio canal de Telegram.

Supongo que el problema es que no entiendo esta frase. No soy muy ducho con Telegram y los canales, ¿podrías explicarlo con un poco más de detalle?

 
Sergey Kasirenko:

Creo que el problema es que no entiendo esta frase. No soy muy bueno con telegram y canales, ¿puedes explicarlo con un poco más de detalle.

En Telegram puedes crear canales y grupos. Este es el primero, este es el canal, que es precisamente el canal del que estamos hablando. Aunque también puedes crear un grupo, supongo...

 
Yevhenii Levchenko:

Puedes crear canales y grupos en Telegram. El primero es un canal, que es precisamente el canal del que estamos hablando. Aunque también puedes crear un grupo, supongo...

Entonces, ¿pero entonces como enlazar grupos o canal y el propio terminal? Si nos dirigimos no a un bot por api, sino a un grupo...? No entiendo la estructura. Ahora se hace así, hay un chatbot, le escribo una orden directamente, en el terminal por el Expert Advisor se pilla todo, pero si lo pongo en otro terminal, entonces claro getUpdates no funciona, porque ya había una petición para este token....

Pero, ¿de qué otra forma puedo obtener datos del bot de Telegram?

 
Sergey Kasirenko:

Entonces, ¿pero como podemos conectar grupos o canal y el propio terminal? ¿Si nos dirigimos no al bot por api, sino a un grupo...? No entiendo la estructura. Ahora se hace así, hay un chatbot, escribo un comando a él directamente, en el terminal es todo capturado por el Asesor de Expertos, pero si lo pongo en otro terminal, entonces por supuesto getUpdates no funciona, porque ya había una solicitud de este token....

Pero, ¿de qué otra forma puedo obtener datos del bot de Telegram?

Creas canales para cada terminal. O grupos, puedes resolverlo tú mismo. Añade tu bot como líder. Recoge los iconos de los canales y ponlos en un array. Entonces, cuando recibas una señal, recorres el array y envías mensajes a todos los canales. Entonces capturas las actualizaciones igual que hiciste con un canal. Sólo que cada terminal lee su propio canal.

Aunque yo no lo he probado).

 
Yevhenii Levchenko:


Aunque yo no lo he probado así en absoluto).

Eso es fuerte )). Pero gracias de todos modos, voy a pensar, cavar, probar algo a cabo

 
Sergey Kasirenko:

Estimados miembros del foro, por favor, díganme cómo resolver este problema

{"ok":false, "error_code":409, "description": "Conflicto: finalizado por otra petición getUpdates; asegúrese de que sólo se está ejecutando una instancia del bot"} ¿Quién se ha encontrado con esto? Dónde indagar, qué mirar.

Tienes algún error en la lógica del bot.

Tengo muchas copias ejecutándose y recibiendo actualizaciones cada segundo sin conflictos. No tiene nada que ver con grupos/canales.

Dame un poco de retroalimentación.

 
Andrey Khatimlianskii:

Tienes algún tipo de bug en la lógica del bot.

Tengo muchas copias funcionando y recibiendo actualizaciones cada segundo sin conflictos. No tiene nada que ver con grupos/canales.

Dame un poco de retroalimentación.

Gracias por la respuesta. Lo hice como se describe en el artículo de Andrey Voitenko. He creado un bot, a través del token que vinculado a los mensajes de este bot y obtenerlos mediante la función getUpdates, he desactivado específicamente ProcessMessages, de hecho todo el código se parece a esto:

//+------------------------------------------------------------------+
//| OnTimer|
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- mostrar mensaje de error 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 nombre del bot
   //Comentario("Nombre del bot: ",bot.Nombre()));
   if(Flag_Init)
   {
     Flag_Init=false;
     bot.UserNameFilter(sName);
     comment.SetText(0,StringFormat("%s v.%s",EXPERT_NAME,EXPERT_VERSION),clrWhite);
     //comment.SetText(1, "Nombre bot: "+bot.Name(),clrWhite);
     comment.Show();
   }  
//--- lectura de mensajes
   bot.GetUpdates();
//--- procesamiento de mensajes
   //bot.ProcessMessages();
  }
//+------------------------------------------------------------------+

Y resulta que tan pronto como me pongo dos copias de este bot (ahora para la simplicidad del experimento en el mismo terminal), me sale este sombrero:

Entiendo que resulta que no se puede llamar a la encuesta con el mismo token como parece, porque, al haber leído una vez, como que marca que se reciben los datos, y a la siguiente copia del bot le dará este error.

Pero cómo organizarlo de otra manera, no sé, tal vez usted lo ha hecho de manera diferente en absoluto, a continuación, compartir el secreto, si no es un secreto comercial

 
Sergey Kasirenko:

Pero cómo organizarlo todo de otra manera, no lo sé, tal vez usted lo ha hecho de manera diferente en absoluto, a continuación, compartir el secreto si no es un secreto comercial

Comercial, por supuesto )

Te escribí en un mensaje privado

 

Buenas tardes, colegas.

¿Podrían decirme cómo añadir emoticonos al texto de un mensaje?

 
Andrey Kaunov:

Buenas noches, colegas.

¿Podrían decirme cómo añadir emoticonos al texto de un mensaje?

Un hombre de verdad necesita una moto y una mujer)

Prohibido de nuevo, de acuerdo.