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ę?


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


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


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


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

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.


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!



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


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.


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.


-1

POTRZEBNA ODPOWIEDŹ:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.