¿Cómo implementar la autorización utilizando una API de Telegram?

Quiero implementar múltiples autorizaciones usando PHP para la interacción con la API REST de Telegram.

¿Qué tarea estoy tratando de resolver? Bueno, es simple: varias docenas de usuarios (todos ellos tienen una carma como esta (+10, -2, +1000, etc.) con taxonomía de grupo relevante: webmasters y clientes) tienen un perfil de usuario en mi sitio web. Después de que alcanzan una cierta cantidad de carma y dado que están autorizados en su perfil, se unen a chats privados basados en Telegram que se generan automáticamente para ellos.

Después de investigar un poco, descubrí que es muy complicado porque:

Nunca he tenido experiencia en la implementación de API para redes sociales vinculadas al hardware.

Eché un vistazo ahttps://core.telegram.org/api/auth, pero no es completamente obvio cómo implementar estas funciones (por ejemplo, auth.sendCode), usando PHP o cualquier otro lenguaje. Si estos comandos se deben enviar como JSON al servidor, entonces no se parece a JSON:

  auth.sentCode#efed51d9 phone_registered:Bool phone_code_hash:string send_call_timeout:int is_password:Bool = auth.SentCode;

¿Qué es? ¿En qué idioma está escrito?

UPD: Está escrito en TL (Idioma de tipo):https://core.telegram.org/mtproto/TL

He explorado el código fuente de varios clientes (Webogram, Telegram-cli (tg), tdesktop), y encontré varias implementaciones dehttps://core.telegram.org/mtproto

Desafortunadamente, ninguno de ellos admite la autorización múltiple por su parte, y después de un poco de investigación, no tengo idea de dónde profundizar para obtener más información.

Además, estas implementaciones se ven voluminosas y compuestas (por ejemplo,https://github.com/vysheng/tg):

Allí veo un montón de servidores (./tg/tgl/tgl.h):

#define TG_SERVER_1 "149.154.175.50"
#define TG_SERVER_2 "149.154.167.51"
#define TG_SERVER_3 "149.154.175.100"
#define TG_SERVER_4 "149.154.167.91"
#define TG_SERVER_5 "149.154.171.5"

Encontré varias funciones posiblemente apropiadas (./tg/tgl/queries.c):

void empty_auth_file (void) {
  if (TLS->test_mode) {
    bl_do_dc_option (TLS, 1, "", 0, TG_SERVER_TEST_1, strlen (TG_SERVER_TEST_1), 443);
    bl_do_dc_option (TLS, 2, "", 0, TG_SERVER_TEST_2, strlen (TG_SERVER_TEST_2), 443);
    bl_do_dc_option (TLS, 3, "", 0, TG_SERVER_TEST_3, strlen (TG_SERVER_TEST_3), 443);
    bl_do_set_working_dc (TLS, TG_SERVER_TEST_DEFAULT);
  } else {
    bl_do_dc_option (TLS, 1, "", 0, TG_SERVER_1, strlen (TG_SERVER_1), 443);
    bl_do_dc_option (TLS, 2, "", 0, TG_SERVER_2, strlen (TG_SERVER_2), 443);
    bl_do_dc_option (TLS, 3, "", 0, TG_SERVER_3, strlen (TG_SERVER_3), 443);
    bl_do_dc_option (TLS, 4, "", 0, TG_SERVER_4, strlen (TG_SERVER_4), 443);
    bl_do_dc_option (TLS, 5, "", 0, TG_SERVER_5, strlen (TG_SERVER_5), 443);
    bl_do_set_working_dc (TLS, TG_SERVER_DEFAULT);
  }
}

void bl_do_dc_option (struct tgl_state *TLS, int id, const char *name, int l1, const char *ip, int l2, int port) {
  struct tgl_dc *DC = TLS->DC_list[id];
  if (DC && !strncmp (ip, DC->ip, l2)) { return; }

  clear_packet ();
  out_int (CODE_binlog_dc_option);
  out_int (id);
  out_cstring (name, l1);
  out_cstring (ip, l2);
  out_int (port);

  add_log_event (TLS, packet_buffer, 4 * (packet_ptr - packet_buffer));
}

etc.

¿Qué archivos debo transferir a PHP para la implementación de autenticación de múltiples usuarios? ¿Podrías ayudarme a saber por dónde empezar y cómo hacerlo más fácil de lo que es actualmente?

¡Gracias de antemano!

Respuestas a la pregunta(4)

Su respuesta a la pregunta