2016-01-26 2 views
0

Я делаю телеграмму бота с телеграммой botfather, и я делаю своего бота как администратора в своем общедоступном телеграмме, теперь я хочу отправить сообщение в канале ботом, это мой код для этой работы:отправить сообщение телеграмме канал by bot

send.php код:

<?php 
    require('telegram-bot-api.php'); 

    $token = '10**************************************jM'; 
    $bot = new telegram_bot($token); 
    $to = '@myChannel'; 
    $rs = $bot->send_message($to , 'test' , null, null); 
     print_r($rs); 
?> 

и телеграмма-бот-api.php код:

<?php 
class ReplyKeyboardMarkup{ 
    public $keyboard; 
    public $resize_keyboard; 
    public $one_time_keyboard; 
    public $selective; 

    function __construct($resize_keyboard=FALSE, $one_time_keyboard = FALSE, $selective=FALSE){ 
     $this->keyboard=array(); 
     $this->keyboard[0]=array(); 
     $this->resize_keyboard=$resize_keyboard; 
     $this->one_time_keyboard=$one_time_keyboard; 
     $this->selective=$selective; 
    } 
    public function add_option($option){ 
     $this->keyboard = $option; 
    } 
} 
class ReplyKeyboardHide{ 
    public $hide_keyboard; 
    public $selective; 

    function __construct($hide_keyboard=TRUE, $selective = FALSE){ 
     $this->hide_keyboard=$hide_keyboard; 
     $this->selective=$selective; 
    } 
} 
class ForceReply{ 
    public $force_reply; 
    public $selective; 

    function __construct($force_reply=TRUE, $selective = FALSE){ 
     $this->force_reply=$force_reply; 
     $this->selective=$selective; 
    } 
} 

class telegram_bot{ 
    private $token; 

    private function open_url($url, $method="GET", $data=null){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     if($method==="POST"){ 
      if(isset($data)){ 
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

      } 
     } 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     return curl_exec($ch); 
    } 

    private function control_api($action, $data=NULL){ 
     $token = $this->token; 
     $response = json_decode($this->open_url("https://api.telegram.org/bot$token$action", "POST", $data)); 
     return $response; 
    } 

    function __construct($token){ 
     $this->token=$token; 
    } 

    public function status(){ 
     $response = $this->control_api("/getme"); 
     return($response); 
    } 

    public function get_updates(){ 
     $response = $this->control_api("/getUpdates"); 
     return($response); 
    } 

    public function send_action($to, $action){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     $data["action"]=$action; 
     $response = $this->control_api("/sendChatAction", $data); 

     return $response; 
    } 

    public function send_message($to, $msg, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     $data["text"]=$msg; 
     $data["disable_web_page_preview"]="true"; 
     if(isset($id_msg)) 
      $data["reply_to_message_id"]=$id_msg; 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 
     $response = $this->control_api("/sendMessage", $data); 

     return $response; 
    } 

    public function send_location($to, $lat, $lon, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     $data["latitude"]=$lat; 
     $data["longitude"]=$lon; 
     if(isset($id_msg)) 
      $data["reply_to_message_id"]=$id_msg; 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 
     $response = $this->control_api("/sendLocation", $data); 

     return $response; 
    } 

    public function send_sticker($to, $sticker, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     if(file_exists($sticker))$sticker="@".$sticker; 
     $data["sticker"]=$sticker; 
     if(isset($id_msg)) 
      $data["reply_to_message_id"]=$id_msg; 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 
     $response = $this->control_api("/sendSticker", $data); 

     return $response; 
    } 

    public function send_video($to, $video, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     if(file_exists($video))$video="@".$video; 
     $data["video"]=$video; 
     if(isset($id_msg)) 
      $data["reply_to_message_id"]=$id_msg; 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 
     $response = $this->control_api("/sendVideo", $data); 
     return $response; 
    } 

    public function send_photo($to, $photo, $caption, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 

     if(file_exists($photo))$photo="@".$photo; 
     $data["photo"]=$photo; 
     if(isset($caption)){ 
      $data["caption"]=$caption; 
     } 
     if(isset($id_msg)){ 
      $data["reply_to_message_id"]=$id_msg; 
     } 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 

     $response = $this->control_api("/sendPhoto", $data); 

     return $response; 
    } 

    public function send_audio($to, $audio, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 

     if(file_exists($audio))$audio="@".$audio; 
     $data["audio"]=$audio; 
     if(isset($id_msg)){ 
      $data["reply_to_message_id"]=$id_msg; 
     } 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 

     $response = $this->control_api("/sendAudio", $data); 

     return $response; 
    } 

    public function send_document($to, $document, $id_msg=null, $reply=null){ 
     $data = array(); 
     $data["chat_id"]=$to; 

     if(file_exists($audio))$document="@".$audio; 
     $data["document"]=$document; 
     if(isset($id_msg)){ 
      $data["reply_to_message_id"]=$id_msg; 
     } 
     if(isset($reply)) 
      $data["reply_markup"]=$reply; 

     $response = $this->control_api("/sendDocument", $data); 

     return $response; 
    } 

    public function forward_message($to, $from, $msg_id){ 
     $data = array(); 
     $data["chat_id"]=$to; 
     $data["from_chat_id"]=$from; 
     $data["message_id"]=$msg_id; 
     $response = $this->control_api("/forwardMessage", $data); 

     return $response; 
    } 

    public function set_webhook($url=null){ 
     $data = array(); 
     $data["url"]=$url; 
     $response = $this->control_api("/setWebhook", $data); 

     return $response; 
    } 

    public function get_user_profile_photos($id_user, $offset=null, $limit=null){ 
     $data = array(); 
     $data["user_id"]=$id_user; 
     if(isset($offset)){ 
      $data["offset"]=$offset; 
     } 
     if(isset($limit)){ 
      $data["limit"]=$limit; 
     } 

     $response = $this->control_api("/getUserProfilePhotos", $data); 

     return $response; 
    } 

    public function read_post_message(){ 
     return json_decode(file_get_contents('php://input')); 
    } 

} 
?> 

но при запуске send.php не отправить сообщение на канал, но когда я заменить chat_id с приватным chat_id или группа chat_id, этот код сделал очень круто и отправить сообщение в группу или мой контакт

Простите меня за мой английский язык, Сори :)

ответ

3

решена, я тестировал с httpRequster плагин для отправки запроса на запись по этой ссылке:

https://api.telegram.org/bot1 ****************** ************* M/SendMessage

и отправил параметры: chat_id = @myChannel_username текста = MyMessage

я не знаю, почему не работает мой старый код, но работайте с этим запросом : D

в любом случае спасибо.

0

Bot должен быть администратором канала для того, чтобы быть способный отправлять сообщения. Ни один из клиентов не может помочь вам сделать бота администратором канала. Вы уверены, что ваш бот является администратором канала?

Источник: https://core.telegram.org/bots/api-changelog#october-8-2015

+0

это право, но бот может послать сообщение на канал, если это администратор или может отправить сообщение для всех тех, кто начинает разговор чат с ботом. Источник: https://core.telegram.org/bots/api#sendmessage – saman

+0

Спасибо за эту ссылку. Проверьте обновленный ответ. –

0

curl имеет эту проблему для SSL. добавить этот код, чтобы решить проблему:

 

     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
+0

, пожалуйста, проверьте это [URL] (http://stackoverflow.com/help), это будет полезно для повышения качества вашего контента –

Смежные вопросы