¿Cómo obtener el chat_id de un canal privado de Telegram?

90

Utilizo curl para actualizar mis canales públicos. Este tipo de sintaxis:

curl -X POST "https://api.telegram.org/bot144377327:AAGqdElkZ-77zsPRoAXXXXXXXXXX/sendMessage" -d "chat_id=@MyChannel&text=my sample text"

Pero, ¿qué es chat_idun canal privado? No es el que tienes en la invitación privada.

Porque ahora podemos pasar un nombre de usuario de canal (en el formato @channelusername) en el lugar de chat_id en todos los métodos (y en lugar de from_chat_id en forwardMessage). Pero, ¿cuál es el @channelusername de un canal privado que administro?

aborruso
fuente
¿Por qué necesitas el chat_id del canal? Todos los métodos de envío al canal usan la cadena "@channel_name"
Stas Parshin
Hola @pengrad con el comando curl, le pido a un bot que envíe un mensaje a MyChannel. Para un canal público, el chat_id es igual a la última parte de su URL: en telegram.me/MyChannel , el chat_id es "MyChannel". Los canales privados solo tienen URL de invitación como telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ y el chat_id no es "AJhkwTviqL_7HWcGZgottQ". Por esta razón estoy buscando el chat_id de un canal privado.
aborruso
¿Hay alguna forma de ejecutar un taxi libre sin telegrama?
Shahid Karimi

Respuestas:

177

Encontré la forma de escribir en canales privados.

  1. Deberías convertirlo a público con algún @channelName
  2. Enviar mensaje a este canal a través de Bot API

    https://api.telegram.org/bot111:222/sendMessage?chat_id=@channelName&text=123

  3. Como respuesta, obtendrás información con chat_id de tu canal.

    {"ok": true, "result": {"chat": { "id": -1001005582487, "title": "Test Private Channel", "type": "channel"}, "date": 1448245538, " message_id ": 7," text ":" 123ds "}}

  4. Ahora puede volver a convertir el canal en privado (eliminando el enlace del canal) y enviar un mensaje directamente a este chat_id "-1001005582487"

    https://api.telegram.org/bot111:222/sendMessage?chat_id=-1001005582487&text=123

Stas Parshin
fuente
1
¡He votado tu pregunta y te agradezco los detalles! Estoy perplejo al votar tu respuesta aquí porque es más un pirateo :-). Por cierto, mi pregunta general es: ¿Cuál es la necesidad de un canal privado? ¿Quizás los grupos (supergrupos recientes) sean una mejor manera? En los faxes, la documentación de los telegramas no está clara sobre los canales privados.
Giorgio Robino
1
Probé esto y funcionó solo durante unos minutos. Creo que porque una vez que el canal se vuelve privado, hay un período de tiempo en el que todavía se puede acceder públicamente: después, si intentas configurarlo nuevamente como público, debes redefinir la identificación del canal.
roibeart
1
Debe aclarar que debemos enviar nuestro token de API junto al bot en la primera barra. De todas formas gracias! Fue una buena solución.
Franco Maldonado
106

Hacer público el canal no lo puede hacer el usuario con al menos 5 grupos / canales públicos, así que ... problema no resuelto. Sí, puede revocar uno de ellos, pero por ahora, no podemos recuperar la identificación del chat de otra manera.

revocar

¿Alguien encontró una solución para ese caso?

actualizar

Encontré una solución loca:

  1. inicie sesión con su cuenta en la versión web de Telegram: https://web.telegram.org
  2. Encuentra tu canal. Consulte su URL, debería ser como https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. Tome "1055587116" y agregue "-100" como prefijo.

Entonces ... tu ID de canal será "-1001055587116". La magia sucede :)

Solución encontrada aquí: https://github.com/GabrielRF/telegram-id#web-channel-id

Nigrimmist
fuente
1
Incluso mi nuevo canal cambió de privado / público / privado a configurar @channel_username, pero aunque es privado, ¡ @channel_usernameno funciona para mí! He utilizado su solución publicada y funcionó
MohaMad
usted señor, es un sabor a vida!
Juggernaut
1
No creo que este -100prefijo funcione para siempre, ¡pero después de 4 años todavía funciona!
Ali Tou
1
@AliTou Pavel Durov acaba de encontrar este comentario y decidió no eliminar FUNCIÓN, ahah :) Me alegra saber que todavía funciona :)
Nigrimmist
31

La forma más fácil es invitar a @get_id_bot en su chat y luego escribir:

/my_id @get_id_bot

Dentro de tu chat

Jurgo Boemo
fuente
3
¡Gracias, la mejor respuesta!
realmag777
1
Según mi prueba, el bot debería agregarse como administrador en el canal.
Morteza Ziyae
Sí, parece que tiene que ser agregado como administrador
Stefan Reich
3
es esto todavía actual? / my_id @ ... no parece hacer nada (aparte de que aparezca ese mensaje)
wal
@wal Obtuve la identificación por 2 métodos /start @get_id_boty también el /my_id @get_id_botespacio parece importante. Agregue @get_id_botcomo miembro y otorgue solo el derecho de publicación como administrador. Quítelo por seguridad una vez que obtenga la identificación.
rahoolm
21

Abra el canal privado, luego:


WARNINGasegúrese de agregar el prefijo -100 cuando use Telegram Bot API:

  • if el ID del canal es, por ejemplo, 1192292378
  • thendeberías usar -1001192292378
Fabio Michelini
fuente
1
Esta es la forma más fácil y correcta de obtener el ID del canal, ¡gracias!
Tonni
4

Tú también puedes hacer esto:

Paso 1) Convierte tu canal privado en canal público

Paso 2) Establezca el nombre del canal para este canal

Paso 3) entonces puedes cambiar este canal a privado

Paso 4) Ahora envíe su mensaje usando @ChannelName que configuró en el paso 3

nota: para el paso 1, puede cambiar uno de sus canales públicos a privado durante un breve período de tiempo.

Mohammad Abdolahzadeh
fuente
3

No es necesario convertir el canal a público y luego hacerlo privado.

  1. encuentra la identificación de tu canal privado. (Existen numerosos métodos para hacer esto, por ejemplo, vea esta respuesta SO )

  2. curl -X POST " https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage " -d "chat_id = -100 CHAT_ID & text = mi texto de muestra"

    reemplace xxxxxx: yyyyyyyyyyy con su identificación de bot y reemplace CHAT_ID con la identificación de canal que se encontró en el paso 1. Entonces, si la identificación de canal es 1234, sería chat_id = -1001234.

¡Todo listo!

apadana
fuente
1

Por ahora, puede escribir un enlace de invitación al bot @username_to_id_bot y obtendrá la identificación:

ejemplo: ingrese la descripción de la imagen aquí

también funciona con chats públicos, canales e incluso usuarios

crystalbit
fuente
0

La opción que hago es usar el popular Plus Messenger en Android. El enlace de Play Store es: https://play.google.com/store/apps/details?id=org.telegram.plus&hl=en

Puede hacer clic en el canal y en la información del canal debajo del nombre del grupo, puede encontrar la identificación del canal.

Los identificadores de supergrupo y de canal se verán como 1068773197 en plus messenger. Para su uso en API, puede prefijar -100, lo que lo haría -1001068773197.

Habeeb
fuente
-1

RESPUESTA NECESARIA:

Debe agregar y hacer su BOT como administrador del canal PRIVADO ; de lo contrario, se producirá un chat not founderror.

T.Todua
fuente