Как получить chat_id частного канала Telegram?


93

Я использую 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 имеет значение «MyChannel». Частные каналы имеют только URL-адрес приглашения, например telegram.me/joinchat/AJhkwTviqL_7HWcGZgottQ, а chat_id не "AJhkwTviqL_7HWcGZgottQ". По этой причине я ищу chat_id частного канала.
aborruso

Есть ли способ запустить бесплатное такси без телеграммы?
Шахид Карими,

Ответы:


186

Я нашел способ писать в приватных каналах.

  1. Вы должны преобразовать его в публичный с помощью некоторого @channelName
  2. Отправить сообщение на этот канал через Bot API

    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. Теперь вы можете преобразовать канал обратно в частный (удалив ссылку на канал) и отправить сообщение прямо на этот chat_id "-1001005582487"

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


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

1
Я попробовал это, и это сработало всего несколько минут. Я думаю, потому что, как только канал становится частным, есть временные рамки, когда он по-прежнему общедоступен: после того, как вы попытаетесь снова сделать его общедоступным, вам придется переопределить идентификатор канала.
roibeart

1
Вы должны уточнить, что нам нужно отправить токен API рядом с ботом на первом слэше. В любом случае спасибо! Это было отличное решение.
Франко Мальдонадо,

110

Сделать канал общедоступным не может пользователь, у которого существует не менее 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

вы, сэр, вкус жизни!
Juggernaut

1
Не думаю, что эта -100приставка будет работать вечно, но через 4 года она все еще работает!
Али Тоу

1
@AliTou Павел Дуров только что нашел этот комментарий и решил не удалять FEATURE, ахах :) Рад слышать, что он все еще работает :)
Nigrimmist

1
Все еще работает (ноябрь 2020 г.)
dcangulo

38

Самый простой способ - пригласить @get_id_bot в чат, а затем ввести:

/my_id @get_id_bot

Внутри вашего чата


3
Спасибо, лучший ответ!
realmag777

2
Согласно моему тесту, бот должен быть добавлен как администратор в канале.
Morteza Ziyae

Да, кажется, нужно добавить в качестве администратора
Stefan Reich

3
это все еще актуально? / my_id @ ... похоже, ничего не делает (кроме появления этого сообщения)
wal

1
@wal Я получил идентификатор двумя способами, /start @get_id_botа также /my_id @get_id_botпробел кажется важным. Добавить в @get_id_botкачестве участника и предоставить только права на публикацию в качестве администратора. Удалите его для безопасности, как только получите удостоверение личности.
rahoolm

25

Откройте частный канал, затем:

  • в веб- клиенте:

  • на мобильном и настольном :

    • скопируйте ссылку на любое сообщение канала:
    • ifэто например https://t.me/c/1192292378/31
    • then 1192292378 - идентификатор канала (бонус: 31 - идентификатор сообщения)
  • в Plus Messenger для Android :

    • открыть информацию о канале:
    • идентификатор канала отображается выше , прямо под его названием

WARNINGне забудьте добавить префикс -100 при использовании Telegram Bot API:

  • if идентификатор канала, например, 1192292378
  • thenвы должны использовать -1001192292378

2
Это самый простой и правильный способ получить идентификатор канала, спасибо!
Тонни

Лучший ответ, спасибо!
Нико,

3

Вы тоже можете это сделать:

Шаг 1) Преобразуйте частный канал в публичный

Шаг 2) Задайте имя канала для этого канала

Шаг 3) затем вы можете изменить этот канал на частный

Шаг 4) Теперь отправляем ваше сообщение с использованием @ChannelName, которое вы установили на шаге 3

примечание: для шага 1 вы можете на короткое время изменить один из публичных каналов на частный.


2

Нет необходимости преобразовывать канал в общедоступный, а затем делать его частным.

  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

А пока вы можете написать инвайт-ссылку боту @username_to_id_bot, и вы получите id:

пример: введите описание изображения здесь

также работает с публичными чатами, каналами и даже пользователями


0

Я могу использовать популярный Plus Messenger на Android. Ссылка на игровой магазин: https://play.google.com/store/apps/details?id=org.telegram.plus&hl=en.

Вы можете нажать на канал и в информации о канале под названием группы найти идентификатор канала.

Идентификаторы супергрупп и каналов будут выглядеть как 1068773197 в мессенджере plus. Для использования в API вы можете использовать префикс -100, что сделает его -1001068773197.


0

Нашел решение для TelegramBotApi для python. Возможно, будет работать для других языков.

Я просто добавляю своего бота в приватный канал и делаю следующее:

@your_bot_name hi

В консоли я получаю ответ со всей необходимой мне информацией.


-1

НУЖЕН ОТВЕТ:

Вам следует добавить и сделать своего БОТА администратором ЧАСТНОГО канала , иначе chat not foundпроизойдет ошибка.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.