Como obter o chat_id de um canal privado do Telegram?


90

Eu uso o curl para atualizar meus canais públicos. Este tipo de sintaxe:

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

Mas qual é o efeito chat_idde um canal privado? Não é o que você tem no convite privado.

Porque agora podemos passar um nome de usuário do canal (no formato @channelusername) no lugar de chat_id em todos os métodos (e em vez de from_chat_id em forwardMessage). Mas qual é o @channelusername de um canal privado que eu administro?


Por que você precisa do chat_id do canal? Todos os métodos de envio para o canal usam a string "@channel_name"
— Stas Parshin

Olá @pengrad com o comando curl, peço a um bot meu para enviar uma mensagem para MyChannel. Para um canal público o chat_id é igual à última parte de sua URL: em telegram.me/MyChannel , o chat_id é "MyChannel". Os canais privados têm apenas url de convite como telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ e o chat_id não é "AJhkwTviqL_7HWcGZgottQ". Por isso estou procurando o chat_id de um canal privado.
— aborruso

Existe uma maneira de executar um táxi livre sem telegrama?
— Shahid Karimi

Respostas:


177

Descobri como escrever em canais privados.

  1. Você deve convertê-lo para público com algum @channelName
  2. Envie mensagem para este canal através da API do Bot

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

  3. Como resposta, você receberá informações com chat_id de seu canal.

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

  4. Agora você pode converter o canal de volta para privado (excluindo o link do canal) e enviar mensagem diretamente para este chat_id "-1001005582487"

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


1
Votei sua pergunta e agradeço os detalhes! Estou perplexo votando sua resposta aqui porque é mais um hacking :-). BTW, minha pergunta geral é: qual a necessidade de um canal privado? Talvez os grupos (supergrupos recentes) sejam a melhor maneira? A documentação do telegrama de facs não é clara sobre os canais privados.
— Giorgio Robino

1
Tentei fazer isso e funcionou apenas por alguns minutos. Eu acho que porque uma vez que o canal se torna privado, há um período de tempo em que ele ainda pode ser acessado publicamente: depois, se você tentar defini-lo novamente como público, terá que redefinir o id do canal.
— roibeart

1
Você deve esclarecer que precisamos enviar nosso token de API ao lado do bot na primeira barra. De qualquer forma, obrigado! Foi uma solução bacana.
— Franco Maldonado,

106

Tornar canal público não pode ser feito por usuário com pelo menos 5 grupos / canais públicos, então ... problema não resolvido. Sim, você pode revogar um deles, mas por enquanto, não podemos recuperar o id do bate-papo de outra forma.

revogar

Alguém encontrou solução para esse caso?

atualizar

Encontrei uma solução maluca:

  1. faça login em sua conta na versão web do Telegram: https://web.telegram.org
  2. Encontre seu canal. Consulte o seu url, deve ser como https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. Pegue "1055587116" nele e adicione "-100" como um prefixo.

Então ... seu id de canal será "-1001055587116". A mágica acontece :)

Solução encontrada aqui: https://github.com/GabrielRF/telegram-id#web-channel-id


1
Mesmo meu novo canal mudou de privado / público / privado para definir @channel_username, mas embora seja privado, @channel_usernamenão está funcionando para mim! Usei sua solução postada e funcionou
— MohaMad

você senhor, é um sabor de vida!
— Juggernaut

1
Não acho que esse -100prefixo funcione para sempre, mas depois de 4 anos ainda funciona!
— Ali Tou

1
@AliTou Pavel Durov acabou de encontrar este comentário e decidiu não remover FEATURE, ahah :) Fico feliz em saber que ainda funciona :)
— Nigrimmist

31

A maneira mais fácil é convidar @get_id_bot para o seu bate-papo e digitar:

/my_id @get_id_bot

Dentro do seu chat


3
Obrigado, a melhor resposta!
— realmag777

1
De acordo com meu teste, o bot deve ser adicionado como administrador no canal.
— Morteza Ziyae

Sim, tem que ser adicionado como administrador ao que parece
— Stefan Reich

3
isso ainda é atual? / my_id @ ... não parece fazer nada (além de ter essa mensagem aparecer)
— wal

@wal obtive a id por 2 métodos /start @get_id_bote também o /my_id @get_id_botespaço parece importante. Adicionar @get_id_botcomo membro e dar apenas direito de postagem como Administrador. Remova-o por segurança assim que conseguir a identificação.
— rahoolm

21

Abra o canal privado e:


WARNINGcertifique-se de adicionar o prefixo -100 ao usar a API do Telegram Bot:

  • if o ID do canal é, por exemplo, 1192292378
  • thenvocê deve usar -1001192292378

1
Esta é a maneira mais fácil e correta de obter o ID do canal, obrigado!
— Tonni

4

Você também pode fazer isso:

Etapa 1) Converter seu canal privado em canal público

Etapa 2) Definir o nome do canal para este canal

Etapa 3) então você pode alterar este canal para privado

Etapa 4) Agora, enviando sua mensagem usando @ChannelName que você definiu na etapa 3

nota: para a etapa 1, você pode alterar um de seus canais públicos para privado por um curto período.


3

Não há necessidade de converter o canal em público e torná-lo privado.

  1. encontre o id do seu canal privado. (Existem vários métodos para fazer isso, por exemplo, veja esta resposta SO )

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

    substitua xxxxxx: yyyyyyyyyyy pelo seu id de bot, e substitua CHAT_ID pelo id do canal encontrado na etapa 1. Portanto, se o id do canal for 1234, seria chat_id = -1001234.

Tudo feito!



1

Por enquanto, você pode escrever um link de convite para bot @username_to_id_bot e obterá a id:

exemplo: insira a descrição da imagem aqui

também funciona com chats públicos, canais e até usuários


0

A opção que faço é usar o popular Plus Messenger no Android. O link da Play Store é: https://play.google.com/store/apps/details?id=org.telegram.plus&hl=en

Você pode clicar no canal e em Informações do canal abaixo do nome do grupo, você pode encontrar o Id do canal.

Os IDs de supergrupo e canal serão semelhantes a 1068773197 no plus messenger. Para seu uso na API, você pode prefixar -100, o que tornaria -1001068773197.


-1

RESPOSTA NECESSÁRIA:

Você deve adicionar e tornar seu BOT como administrador do canal PRIVADO , caso contrário, chat not foundocorrerá um erro.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.