2015-10-14 18 views
42

Używam bota powiedzieć ważne wiadomości, ale kiedy za pomocą sendMessage do kanału Otrzymuję następujący błąd:Jak dodać mojego bota do kanału?

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

W Change Log wspominają to nie jest możliwe, za pośrednictwem klienta, aby wysłać wiadomość do kanału, ale jaki jest inny sposób na zrobienie tego?

Pytanie brzmi, jak dodać bota do kanału?

Odpowiedz

0

Czy używasz prawego znaku czatu i dołączając token bota po "bocie" w adresie? (Api.telegram.org/bot żeton/sendMessage)

This page wyjaśnia kilka rzeczy o wysyłanie (w sekcji „sendMessage”) - podstawowe rzeczy, ale często zapominają podstaw.

zacytować:

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.

Mam nadzieję, że pomaga.

+0

Mogę błędnie opublikować pytanie. Musisz zrozumieć moje pytanie ... Mam działający kod, który może wysłać wiadomość do użytkownika bez problemów. Mówię o wysyłaniu wiadomości do kanałów .... Proszę –

+0

I ' Przepraszam - nie zwracałem na to uwagi.Wygląda na to, że to, co próbujesz zrobić, nie zostało jeszcze zaimplementowane (zgodnie z dziennikiem zmian, na który już patrzyłeś): _ "Możesz teraz przekazać nazwę użytkownika kanału (w formacie @ channelusername) w miejsce adresu czatu we wszystkich metodach (i zamiast from_chat_id w forwardMessage) .Aby to zadziałało, bot musi być administratorem w kanale (** i to dokładnie to, czego jeszcze nie obsługują klienci Telegram ** - dodawanie botów jako administratorów wkrótce). " _ – JGR

+0

@Rosini potwierdził wsparcie dla botów - nie możesz dodać bota do admina na kanale, a to jedyny sposób, w jaki bot może publikować na kanale. – JGR

74

Teraz wszyscy klienci pozwalają to zrobić, ale nie jest to proste.
W każdym klientem telegramu:

  1. informacji Otwarte Kanał (w app tytuł)
  2. Wybierz Administrators
  3. Dodaj Administrator
  4. Nie będzie boty w liście kontaktów, więc trzeba go szukać . Podaj swoją nazwę użytkownika bota:
  5. Klikając na nią, stajesz się administratorem.

enter image description here

+0

Czy wiesz, jak uzyskać @channelusername z prywatnego kanału. Jestem administratorem tego. Dziękuję – aborruso

+0

@aborruso staram się znaleźć jak to zrobić ...) –

+0

@aborruso ok, spojrzeć na swoje pierwotne pytanie –

32

ten sposób Dodałem bota do mojego kanału i skonfigurować powiadomienia:

  1. upewnić się, że kanał jest publicznego (można ustawić go prywatny później)
  2. Dodaj administratorów> Wpisz nazwę użytkownika bota i ustaw go jako administratora
  3. Twój bot dołączy do Twojego kanału
  4. Ustaw identyfikator kanału, ustawiając URL kanału, taki jak

telegram.me/whateverIWantAndAvailable

identyfikator kanału będzie @whateverIWantAndAvailable

teraz skonfigurować bota do wysyłania powiadomień przez pusshing wiadomości tutaj:

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id=@whateverIWantAndAvailable & tekst = Test

komunikat, który poinformuje bot jest: test

zdecydowanie sugerują urlencode wiadomości jak

https://api.telegram.org/botTOKENOFTHEBOT/sendMessage?chat_id=@whateverIWantAndAvailable & tekst = Testowanie% 20if% 20this% 20works

w php możesz użyć urlencode ("Sprawdź, czy to działa"); w js można encodeURIComponent ("Sprawdź, czy to działa");

Mam nadzieję, że to pomaga

+0

Jak ustawić go na prywatny? – CodeGuru

+0

@CodeGuru - możesz ustawić ten kanał jako prywatny w telegramie desctop lub kliencie mobilnym, jeśli byłeś administratorem kanału. Dla mnie to działało w ten sposób - najpierw upubliczniłem kanał, wysłałem wiadomość przez bota na ten kanał, niż zrobiłem kanał prywatny, a bot nadal mógł wysyłać w nim wiadomości. Zakładam więc, że działa jakoś. Ale po pewnym czasie przestał działać. Zakładam więc, że boty nie mogą wysyłać wiadomości do prywatnych kanałów. – vodolaz095

+0

Wymieniono tutaj pewne zwariowane rozwiązanie - https://stackoverflow.com/a/39943226/1885921 – vodolaz095

8

Jak teraz:

  • Tylko twórca kanału może dodać bota.
  • Inni administratorzy nie mogą dodawać botów do kanałów.
  • kanału mogą być publiczne lub prywatne (nie ma znaczenia)
  • boty mogą być dodawane tylko adminów, niebędących członkami *

Aby dodać bota na swoim kanale.

  • kliknięcie na nazwę kanału: enter image description here

  • kliknięcie na adminów: enter image description here

  • kliknij Dodaj Admin: enter image description here

  • wyszukiwania dla bota jak @your_bot_name i kliknij Dodaj: ** enter image description here

* W niektórych platformach, takich jak Mac rodzimej telegramu klient może wyglądać tak, że możesz dodać bota jako członka, ale na końcu to nie zadziała.
** bot nie musi znajdować się na liście kontaktów.

+0

które było pomocne +1 –

Powiązane problemy