2015-10-14 5 views
42

Я использую бот сказать важную новость, но когда я с помощью sendMessage на канал я получаю следующее сообщение об ошибке:Как добавить бота в канал?

{"ok":false,"error_code":403,"description":"Error: Forbidden: bot is not a participant of the channel"} 

В Change Log они упоминают, что это не возможно через клиент для отправки сообщение на канал, но тогда, каков другой способ сделать это?

Итак, вопрос в том, как добавить моего бота на канал?

ответ

0

Вы используете правильный chat_id и в том числе свой бот-маркер после «бота» в адресе? (Api.telegram.org/bot маркер/SendMessage)

This page объясняет несколько вещей об отправке (вниз в разделе «SendMessage») - основной материал, но я часто забывают основы.

процитировать:

In order to use the sendMessage method we need to use the proper chat_id.

First things first let's send the /start command to our bot via a Telegram client.

After sent this command let's perform a getUpdates commands.

curl -s \ 
-X POST \ https://api.telegram.org/bot<token>/getUpdates \ | jq . 

The response will be like the following

{ "result": [ 
    { 
     "message": { 
     "text": "/start", 
     "date": 1435176541, 
     "chat": { 
      "username": "yourusername", 
      "first_name": "yourfirstname", 
      "id": 65535 
     }, 
     "from": { 
      "username": "yourusername", 
      "first_name": "yourfirstname", 
      "id": 65535 
     }, 
     "message_id": 1 
     }, 
     "update_id": 714636917 
    } ], "ok": true } 

We are interested in the property result.message[0].chat.id, save this information elsewhere.

Please note that this is only an example, you may want to set up some automatism to handle those informations Now how we can send a message ? It's simple let's check out this snippet.

curl -s \ 
-X POST \ https://api.telegram.org/bot<token>/sendMessage \ 
-d text="A message from your bot" \ 
-d chat_id=65535 \ | jq . 

Where chat_id is the piece of information saved before.

Я надеюсь, что помогает.

+0

Я могу ошибочно поставить вопрос .. Вам нужно понять мой вопрос ... У меня есть рабочий код, который может отправить сообщение пользователю без проблем .. Я говорю о отправке сообщения в Каналы .... Пожалуйста, –

+0

I ' Извините, я не обратил на это внимания.Похоже, что вы еще не выполнили (в соответствии с измененным списком изменений): _ «Теперь вы можете передать имя пользователя канала (в формате @channelusername) вместо chat_id во всех методах (и вместо from_chat_id в forwardMessage). Для этого бот должен быть администратором канала (** и это точно, что клиенты Telegram еще не поддерживают ** - добавление ботов в качестве администраторов в ближайшее время) ». _ – JGR

+0

@ Rosini подтверждается поддержкой бота - вы не можете добавить бота к админу в канале, но это единственный способ, который бот может отправлять на канал. – JGR

74

Теперь все клиенты позволяют это делать, но это не очень просто.
В любом Телеграмма клиенте:

  1. Информация открытого канала (в заголовке приложения)
  2. Выберите Administrators
  3. Добавить Administrator
  4. Там не будет ботов в списке контактов, так что вы должны искать его , Введите свое имя пользователя бота
  5. Нажмите на него, сделав его администратором.

enter image description here

+0

Знаете ли вы, как иметь имя @channelus для частного канала. Я администратор этого. Спасибо – aborruso

+0

@aborruso я пытаюсь найти, как это сделать ...) –

+0

@aborruso хорошо, посмотрите на свой оригинальный вопрос –

32

Это, как я добавил бот на мой канал и настроить уведомление:

  1. Убедитесь, что канал общественного (вы можете установить его личное позже)
  2. Добавить администраторов> Введите имя пользователя бота и сделайте его администратором
  3. Ваш бот присоединится к вашему каналу
  4. установить идентификатор канала, установив URL-адрес канала, например

телеграмма.мне/whateverIWantAndAvailable

идентификатор канала будет @whateverIWantAndAvailable

Теперь настроить бот для отправки уведомлений по pusshing сообщений здесь:

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id=@whateverIWantAndAvailable & текста = Испытание

сообщение, которое бот сообщит это: Test

Я настоятельно предложить UrlEncode сообщения как

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id=@whateverIWantAndAvailable & текст = Тестирование% 20if% 20this% 20works

в php вы можете использовать urlencode («Тест, если это работает»); в js вы можете encodingURIComponent («Проверить, если это работает»);

Я надеюсь, что это помогает

+0

Как настроить его на приватное? – CodeGuru

+0

@CodeGuru - вы можете настроить этот канал как приватный в своем телеграмме desctop или мобильном клиенте, если вы были администратором канала. Для меня это сработало таким образом - я сначала сделал канал общедоступным, послал сообщение ботом на этот канал, чем сделал канал приватным, и бот все равно мог отправить сообщение. Итак, я полагаю, это работает как-то. Но после некоторого этима он прекратил работать. Итак, я полагаю, что боты не могут отправлять сообщения на частные каналы – vodolaz095

+0

есть какое-то безумное решение, упомянутое здесь - https://stackoverflow.com/a/39943226/1885921 – vodolaz095

8

В настоящее время:

  • только создатель канала может добавить бота.
  • Другие администраторы не могут добавлять боты в каналы.
  • канал может быть публичным или частным (не имеет значения)
  • боты могут быть добавлены только в качестве администраторов, не являющихся членами *

Чтобы добавить бота на канал:.

  • нажмите на название канала: enter image description here

  • нажмите на админов: enter image description here

  • нажмите на Add Admin: enter image description here

  • поиск бота, как @your_bot_name, и нажмите кнопку Добавить: ** enter image description here

* В некоторых платформах, таких как макинтош родной телеграммой клиент может выглядеть так, что вы можете добавить бота в качестве участника, но в конце он не будет работать.
** Бот не обязательно должен быть в вашем списке контактов.

+0

, что было полезно +1 –