Jak uzyskać identyfikator chat_id prywatnego kanału Telegram?

93

Używam curl do aktualizacji moich kanałów publicznych. Ten rodzaj składni:

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

Ale co chat_idz kanałem prywatnym? To nie jest ten, który masz w prywatnym zaproszeniu.

Ponieważ teraz możemy przekazać nazwę użytkownika kanału (w formacie @nazwa_kanału) w miejsce chat_id we wszystkich metodach (i zamiast from_chat_id w forwardMessage). Ale jaka jest nazwa @channelusername kanału prywatnego, którym administruję?

aborruso
źródło
Dlaczego potrzebujesz identyfikatora chat_id kanału? Wszystkie metody wysyłania do kanału używają ciągu „@channel_name”
Stas Parshin
Cześć @pengrad z poleceniem curl. Proszę mojego bota o wysłanie wiadomości do MyChannel. W przypadku kanału publicznego identyfikator chat_id jest równy ostatniej części adresu URL: w telegram.me/MyChannel identyfikator_chatu to „MyChannel”. Kanały prywatne mają tylko adres URL zaproszenia, taki jak telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ, a identyfikator chat_id to nie „AJhkwTviqL_7HWcGZgottQ”. Z tego powodu szukam identyfikatora chat_id kanału prywatnego.
aborruso
Czy istnieje sposób na uruchomienie darmowej taksówki bez telegramu?
Shahid Karimi

Odpowiedzi:

187

Znalazłem sposób na pisanie na kanałach prywatnych.

  1. Powinieneś przekonwertować go na publiczny za pomocą jakiegoś @channelName
  2. Wyślij wiadomość na ten kanał przez Bot API

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

  3. W odpowiedzi otrzymasz informacje z chat_id Twojego kanału.

    {"ok": true, "result": {"chat": { "id": -1001005582487, "title": "Testuj kanał prywatny", "type": "channel"}, "date": 1448245538, " message_id ": 7," text ":" 123ds "}}

  4. Teraz możesz przekonwertować kanał z powrotem na prywatny (usuwając link do kanału) i wysłać wiadomość bezpośrednio na ten chat_id „-1001005582487”

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

Stas Parshin
źródło
1
Zagłosowałem na Twoje pytanie i dziękuję za szczegóły! Jestem zakłopotany głosowaniem tutaj na twoją odpowiedź, ponieważ jest to bardziej hacking :-). Przy okazji, moje ogólne pytanie brzmi: po co jest kanał prywatny? Może grupy (ostatnie supergrupy) są lepszym sposobem? W telegramie facs nie ma jasności co do kanałów prywatnych.
Giorgio Robino
1
Próbowałem tego i działało tylko przez kilka minut. Myślę, że gdy kanał stanie się prywatny, istnieje przedział czasowy, w którym nadal jest publicznie dostępny: po tym, jeśli spróbujesz ustawić go ponownie jako publiczny, musisz ponownie zdefiniować identyfikator kanału.
roibeart
1
Powinieneś wyjaśnić, że musimy przesłać nasz token API obok bota przy pierwszym ukośniku. W każdym razie dzięki! To było zgrabne rozwiązanie.
Franco Maldonado
110

Udostępnij kanał jako publiczny nie może zrobić użytkownik, który ma co najmniej 5 publicznych grup / kanałów, więc ... problem nie został rozwiązany. Tak, możesz odwołać jeden z nich, ale na razie nie możemy odzyskać identyfikatora czatu w inny sposób.

unieważnić

Czy ktoś znalazł rozwiązanie w tej sprawie?

aktualizacja

Znalazłem szalone rozwiązanie:

  1. zaloguj się na swoje konto w internetowej wersji Telegram: https://web.telegram.org
  2. Znajdź swój kanał. Zobacz swój adres URL, powinien wyglądać jak https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. Weź z niego „1055587116” i dodaj jako prefiks „-100”.

Więc ... Twój identyfikator kanału to „-1001055587116”. Magia się wydarzyła :)

Rozwiązanie znalezione tutaj: https://github.com/GabrielRF/telegram-id#web-channel-id

Nigrimmist
źródło
1
Nawet mój nowy kanał został ustawiony jako prywatny / publiczny / prywatny @channel_username, ale chociaż jest prywatny, @channel_usernamenie działa dla mnie! Skorzystałem z opublikowanego rozwiązania i
działałem
Panie, jesteście smakiem życia!
Juggernaut
1
Nie sądzę, że ten -100prefiks będzie działał wiecznie, ale po 4 latach nadal działa!
Ali Tou
1
@AliTou Pavel Durov właśnie znalazł ten komentarz i zdecydował się nie usuwać FEATURE, acha :) Miło słyszeć, że nadal działa :)
Nigrimmist
1
Nadal działa teraz (listopad 2020)
dcangulo
38

Najłatwiej jest zaprosić @get_id_bot na swój czat, a następnie wpisać:

/my_id @get_id_bot

W Twoim czacie

Jurgo Boemo
źródło
3
Dziękuję, najlepsza odpowiedź!
realmag777
2
Według mojego testu bot powinien zostać dodany jako administrator w kanale.
Morteza Ziyae
Tak, wydaje się, że trzeba dodać jako administratora
Stefan Reich
3
czy to wciąż aktualne? / my_id @ ... wydaje się, że nic nie robi (poza tym, że pojawia się ten komunikat)
wal
1
@wal Identyfikator zdobyłem 2 metodami, /start @get_id_bota /my_id @get_id_botprzestrzeń wydaje się ważna. Dodaj @get_id_botjako członka i nadaj tylko postowi uprawnienia administratora. Usuń go ze względów bezpieczeństwa po otrzymaniu identyfikatora.
rahoolm
25

Otwórz kanał prywatny, a następnie:

  • na kliencie internetowym :

  • na telefonie komórkowym i komputerze :

    • skopiuj link do dowolnej wiadomości z kanału:
    • ifjest to na przykład https://t.me/c/1192292378/31
    • then 1192292378 to identyfikator kanału (bonus: 31 to identyfikator wiadomości)
  • w Plus Messenger na Androida :

    • otwórz informacje o kanale:
    • identyfikator kanału pojawia się powyżej , tuż pod jego nazwą

WARNINGpamiętaj, aby dodać prefiks -100 podczas korzystania z Telegram Bot API:

  • if ID kanału to na przykład 1192292378
  • thenpowinieneś użyć -1001192292378
Fabio Michelini
źródło
2
To najłatwiejszy i prawidłowy sposób na uzyskanie identyfikatora kanału, dzięki!
Tonni
Najlepsza odpowiedź, dzięki!
Niko
3

Ty też możesz to zrobić:

Krok 1) Zmień swój kanał prywatny na kanał publiczny

Krok 2) Ustaw nazwę kanału dla tego kanału

Krok 3), a następnie możesz zmienić ten kanał na prywatny

Krok 4) Teraz wysyłanie wiadomości za pomocą @ChannelName, które ustawiłeś w kroku 3

Uwaga: w kroku 1 możesz na krótki czas zmienić jeden ze swoich kanałów publicznych na prywatny.

Mohammad Abdolahzadeh
źródło
2

Nie ma potrzeby konwertowania kanału na publiczny, a następnie ustaw go jako prywatny.

  1. znajdź identyfikator swojego prywatnego kanału. (Istnieje wiele metod, aby to zrobić, na przykład zobacz tę odpowiedź SO )

  2. curl -X POST " https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage " -d "chat_id = -100 CHAT_ID & text = mój przykładowy tekst"

    zamień xxxxxx: yyyyyyyyyyy na swój identyfikator bota, a CHAT_ID na identyfikator kanału znaleziony w kroku 1. Więc jeśli identyfikator kanału to 1234, będzie to chat_id = -1001234.

Gotowe!

apadana
źródło
1

Na razie możesz napisać link z zaproszeniem do bota @ nazwa_użytkownika_to_id_bota, a otrzymasz identyfikator:

przykład: wprowadź opis obrazu tutaj

działa również z publicznymi czatami, kanałami, a nawet użytkownikami

crystalbit
źródło
0

Opcja, którą robię, to użycie popularnego Plus Messenger na Androida. Link do sklepu Play to: https://play.google.com/store/apps/details?id=org.telegram.plus&hl=en

Możesz kliknąć kanał, aw Informacjach o kanale pod nazwą grupy można znaleźć identyfikator kanału.

Identyfikatory supergrupy i kanału będą wyglądać jak 1068773197 w programie Plus Messenger. Do użytku w interfejsie API możesz poprzedzić -100, co spowoduje, że będzie to -1001068773197.

Habeeb
źródło
0

Znalazłem rozwiązanie dla TelegramBotApi dla Pythona. Może zadziała w innych językach.

Po prostu dodaję mojego bota do kanału prywatnego i robię to:

@your_bot_name hi

W konsoli otrzymuję odpowiedź ze wszystkimi potrzebnymi informacjami.

lisichka ggg
źródło
-1

POTRZEBNA ODPOWIEDŹ:

Powinieneś dodać i ustawić swojego BOTa jako administratora kanału PRYWATNEGO , w przeciwnym razie chat not foundwystąpi błąd.

T.Todua
źródło