Як отримати ідентифікатор чату приватного каналу Telegram?


90

Я використовую curl для оновлення своїх загальнодоступних каналів. Цей синтаксис:

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

Але що chat_idтаке приватний канал? Це не той, який у вас є в приватному запрошенні.

Тому що тепер ми можемо передавати ім'я користувача каналу (у форматі @channelusername) замість chat_id у всіх методах (і замість from_chat_id у forwardMessage). Але яке @channelusername приватного каналу, яким я керую?


Навіщо потрібен chat_id каналу? Усі методи надсилання на канал використовують рядок "@channel_name"
Стас Паршин

Привіт @pengrad з командою curl. Я прошу свого бота надіслати повідомлення на MyChannel. Для громадського каналі chat_id дорівнює останньої частина його URL: в telegram.me/MyChannel , то chat_id це «мій канал». Приватні канали запрошують тільки URL , як telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ і chat_id не "AJhkwTviqL_7HWcGZgottQ». З цієї причини я шукаю chat_id приватного каналу.
aborruso

Чи можна запустити таксі libre без телеграми?
Шахід Карімі

Відповіді:


177

Я знайшов спосіб писати в приватних каналах.

  1. Вам слід перетворити його на загальнодоступний за допомогою @channelName
  2. Надішліть повідомлення цьому каналу через API Bot

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

  3. У відповідь ви отримаєте інформацію про chat_id вашого каналу.

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

  4. Тепер ви можете перетворити канал назад у приватний (видаливши посилання на канал) і надіслати повідомлення безпосередньо на цей ідентифікатор чату "-1001005582487"

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


1
Я проголосував за ваше запитання і дякую за подробиці! Я здивований, голосуючи за вашу відповідь тут, тому що це більше хакерство :-). До речі, моє загальне запитання: а що потрібно приватному каналу? Можливо, групи (нещодавні супергрупи) є кращим способом? У факах документація щодо телеграм незрозуміла щодо приватних каналів.
Джорджо Робіно

1
Я спробував це, і це спрацювало лише кілька хвилин. Думаю, оскільки, як тільки канал стає приватним, є часові рамки, коли він все ще доступний для публіки: після, якщо ви спробуєте встановити його знову як загальнодоступний, вам доведеться перевизначити ідентифікатор каналу.
roibeart

1
Ви повинні пояснити, що нам потрібно подати наш токен api поруч з ботом на першу скісну риску. У будь-якому разі спасибі! Це було акуратне рішення.
Франко Мальдонадо

106

Зробити канал загальнодоступним не може зробити користувач, оскільки існує принаймні 5 загальнодоступних груп / каналів, тому ... проблема не вирішена. Так, ви можете відкликати одну з них, але наразі ми не можемо отримати ідентифікатор чату іншим способом.

відкликати

Хтось знайшов рішення для цієї справи?

оновлення

Я знайшов божевільне рішення:

  1. увійдіть під своїм акаунтом у веб-версії Telegram: https://web.telegram.org
  2. Знайдіть свій канал. Перегляньте свою URL-адресу, вона повинна виглядати як https://web.telegram.org/#/im?p=c 1055587116 _11052224402541910257
  3. Візьміть з нього "1055587116" і додайте "-100" як префікс.

Отже ... ідентифікатор вашого каналу буде "-1001055587116". Магія трапляється :)

Рішення знайдено тут: https://github.com/GabrielRF/telegram-id#web-channel-id


1
Навіть мій новий канал перемикав приватний / публічний / приватний на встановлення @channel_username, але, хоча він приватний, @channel_usernameдля мене не працює! Я скористався вашим опублікованим рішенням і працював
MohaMad

Ви, сер, ви насолоджуєтесь життям!
Джаггернаут

1
Я не думаю, що цей -100префікс буде працювати вічно, але через 4 роки він все ще працює!
Алі Ту

1
@AliTou Павло Дуров щойно знайшов цей коментар і вирішив не видаляти FEATURE, ага :) Радий почути, що це все ще працює :)
Nigrimmist

31

Найпростіший спосіб - запросити @get_id_bot у свій чат, а потім набрати:

/my_id @get_id_bot

Усередині чату


3
Дякую, найкраща відповідь!
realmag777

1
Згідно з моїм тестом, бота слід додати як адміністратора на каналі.
Morteza Ziyae

Так, це повинно бути додано як адміністратор
Стефан Рейх,

3
це все ще актуально? / My_id @ ... не здається , робити що - небудь (крім мати , що з'являється повідомлення)
вали

@wal Я отримав ідентифікатор двома методами, /start @get_id_botа також /my_id @get_id_botпростір здається важливим. Додайте @get_id_botяк учасника та надайте лише допис як адміністратор. Видаліть його для безпеки після отримання посвідчення особи.
rahoolm

21

Відкрийте приватний канал, а потім:

  • у веб- клієнті:

  • на мобільному та настільному ПК :

    • скопіювати посилання з будь-якого повідомлення каналу:
    • ifце, наприклад, https://t.me/c/1192292378/31
    • then 1192292378 - ідентифікатор каналу (бонус: 31 - ідентифікатор повідомлення)
  • у програмі Plus Messenger для Android :

    • відкрити інформацію про канал:
    • ідентифікатор каналу з’являється вгорі , прямо під його назвою

WARNINGобов’язково додайте префікс -100 під час використання API Telegram Bot:

  • if ідентифікатор каналу, наприклад, 1192292378
  • thenслід використовувати -1001192292378

1
Це найпростіший і правильний спосіб отримати ідентифікатор каналу, дякую!
Тонні

4

Ви також можете зробити це:

Крок 1) Перетворіть свій приватний канал на загальнодоступний

Крок 2) Встановіть ChannelName для цього каналу

Крок 3), тоді Ви можете змінити цей канал на Приватний

Крок 4) Тепер надсилаємо своє повідомлення за допомогою @ChannelName, яке ви встановили на кроці 3

Примітка. На кроці 1 ви можете ненадовго змінити один із своїх публічних каналів на приватний.


3

Не потрібно перетворювати канал на загальнодоступний, а потім зробити його приватним.

  1. знайти ідентифікатор вашого приватного каналу. (Для цього існує безліч методів, наприклад, див. Цю відповідь SO )

  2. curl -X POST " https://api.telegram.org/botxxxxxx:yyyyyyyyyyy/sendMessage " -d "chat_id = -100 CHAT_ID & text = мій зразок тексту"

    замініть xxxxxx: yyyyyyyyyyy на ваш ідентифікатор бота, а CHAT_ID - на ідентифікатор каналу, знайдений на кроці 1. Отже, якщо ідентифікатор каналу 1234, це буде chat_id = -1001234.

Готово!


1

Ідентифікатором вашого приватного каналу є XXXXXX частина (між "p = c" та підкресленням). Щоб використовувати його, просто додайте перед ним "-100". Отже, якщо "XXXXXX" - "4785444554", ідентифікатор вашого приватного каналу "-1004785444554".


1

Наразі ви можете написати посилання на запрошення на bot @username_to_id_bot, і ви отримаєте ідентифікатор:

приклад: введіть тут опис зображення

також працює з публічними чатами, каналами та навіть користувачами


0

Варіант, який я роблю, - це використання популярного додатку Plus Messenger на Android. Посилання на магазин магазину: https://play.google.com/store/apps/details?id=org.telegram.plus&hl=uk

Ви можете натиснути на канал, а в розділі Інформація про канал під назвою групи можна знайти ідентифікатор каналу.

Ідентифікатори Supergroup та Channel будуть виглядати як 1068773197 на додатку messenger. Для вашого використання в API ви можете ввести префікс -100, що зробить його -1001068773197.


-1

ПОТРІБНА ВІДПОВІДЬ:

Вам слід додати і зробити свій BOT як адміністратор приватного каналу , інакше chat not foundтрапляється помилка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.