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?

aborruso
fonte
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

Stas Parshin
fonte
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

Nigrimmist
fonte
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

Jurgo Boemo
fonte
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
Fabio Michelini
fonte
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.

Mohammad Abdolahzadeh
fonte
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!

Apadana
fonte
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

Crystalbit
fonte
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.

Habeeb
fonte
-1

RESPOSTA NECESSÁRIA:

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

T.Todua
fonte