Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
php:telegram [2015/11/10 08:46] – [Исходники] mirocowphp:telegram [2015/11/14 15:22] (текущий) – [Запуск бота] mirocow
Строка 1: Строка 1:
-{{tag>extension yii2}}+{{tag>extension yii2 php}}
  
 ====== Telegram BOT API (Yii2) ====== ====== Telegram BOT API (Yii2) ======
Строка 10: Строка 10:
 @BotFather @BotFather
 </code> </code>
-===== Описание =====+===== Описание реализации на mirocow/yii2-telegram-api =====
  
-Данные получаются в формате JSON через [[https://core.telegram.org/bots/api#setwebhook|Webhook]]+Пример реализации на **[[https://github.com/Mirocow/yii2-telegram-api|mirocow/yii2-telegram-api]]** 
 + 
 +==== Настройка ====
  
 <code php> <code php>
-file_get_contents('php://input')+'modules=> [ 
 +            'telegram' => [ 
 +                    'class' => 'mirocow\telegram\Module', 
 +                    'token' => 'api-telegram-token', 
 +                    'unknownCommand' => 'mirocow\telegram\commands\UnknownCommand', 
 +                    'defaultMessage' => 'mirocow\telegram\commands\DefaultMessage', 
 +                    'options' => [], 
 +                    'commands' => [ 
 +                        'help' => 'app\commands\HelpCommand', 
 +                    ], 
 +            ], 
 +], 
 </code> </code>
  
-Отправка сообщений или команд боту идет по ID чата. Оно же равно ID пользователя.+==== Запуск бота ====
  
-Простой пример приветствия завязанного на [[https://core.telegram.org/bots/api#setwebhook|Webhook]]+<code sh> 
 +$ php ./yii mirocow\telegram\bot 
 +</code> 
 + 
 +Бот имеет возможность поддержки опций запуска **options** 
 + 
 +=== Создание команд бота === 
 + 
 +nano app\commands\HelpCommand
  
 <code php> <code php>
-actionInit(){+namespace mirocow\telegram\commands; 
 + 
 +use mirocow\telegram\interfaces\CommandInterface; 
 + 
 +class HelpCommand implements CommandInterface { 
 + 
 +    public function run(\Zelenin\Telegram\Bot\Type\Update $update)
 + 
 +        return <<<HELP 
 + 
 +        Help coomand 
 + 
 +HELP; 
 + 
 +    } 
 + 
 +
 +</code> 
 +==== Отправка сообщений ==== 
 + 
 +<code php> 
 +</code> 
 +===== Описание реализации на akalongman/php-telegram-bot ===== 
 + 
 +Пример реализации на **[[https://github.com/akalongman/php-telegram-bot|akalongman/php-telegram-bot]]** 
 + 
 +==== Webhook ==== 
 + 
 +Простой пример приветствия завязанного на [[https://core.telegram.org/bots/api#setwebhook|Webhook]], реализованного на [[yii2:start|Yii2]] с помощью. Обязательное наличиче **SSL**. И хук должен отправляться на **https:** 
 + 
 +<code php> 
 +class APIController {
      
-  $gram=json_decode(file_get_contents('php://input'),true);+  public $API_KEY = 'your_bot_api_key'; 
 +  public $BOT_NAME = 'namebot'; 
 +  public $API_CERTIFICATE = ''; 
 +   
 +  public function init(){
  
-  $message='Hello+    try { 
-  .$gram['message']['chat']['last_name'].'+        $telegram new Longman\TelegramBot\Telegram($this->API_KEY, $this->BOT_NAME);
-  .$gram['message']['chat']['first_name'].'. Your ID in Telegram is: ' +
-  .$gram['message']['chat']['id'];+
  
-  file_get_contents('https://api.telegram.org/botTOKEN/sendMessage?chat_id=' +        echo $telegram->setWebHook('https://yourdomain/api/init'$this->API_CERTIFICATE); 
-  .$gram['message']['chat']['id'].'&text=' +    } catch (Longman\TelegramBot\Exception\TelegramException $e
-  .urlencode($message))+        echo $e->getMessage()
 +    }    
          
-}+  } 
 +   
 +  public function actionInit(){ 
 + 
 +    try { 
 +        $telegram = new Longman\TelegramBot\Telegram($this->API_KEY, $this->BOT_NAME); 
 + $telegram->addCommandsPath(Yii::getAlias('@app\commands')); 
 +        $telegram->handle(); 
 +    } catch (Longman\TelegramBot\Exception\TelegramException $e) { 
 +        // echo $e->getMessage(); 
 +    }     
 +     
 +  }   
 +   
 +}  
 </code> </code>
-===== SSL for WebHook =====+ 
 +=== SSL for WebHook ===
  
   * http://www.startssl.com/ (free for noncommerce)   * http://www.startssl.com/ (free for noncommerce)
-  * https://buy.wosign.com/+  * https://buy.wosign.com/free/?lan=en 
 + 
 +==== getUpdates ==== 
 + 
 +Другой метод не требует наличия SSL - это [[https://core.telegram.org/bots/api#getupdates|getUpdates]] 
 + 
 +<code php> 
 +class APIController { 
 +   
 +  public $API_KEY = 'your_bot_api_key'; 
 +  public $BOT_NAME = 'namebot'; 
 +  public $COMMANDS_FOLDER = 'app/commands'; 
 +   
 +  public function init(){ 
 + 
 +    try { 
 +        $telegram = new Longman\TelegramBot\Telegram($this->API_KEY, $this->BOT_NAME); 
 + $telegram->enableMySQL($credentials); 
 +      $telegram->addCommandsPath($this->COMMANDS_FOLDER); 
 +        $telegram->handleGetUpdates(); 
 +    } catch (Longman\TelegramBot\Exception\TelegramException $e) { 
 +        echo $e->getMessage(); 
 +    }     
 +     
 +  }   
 +   
 +}   
 +</code>
  
 ===== Исходники ===== ===== Исходники =====
Строка 47: Строка 144:
 ===== Yii2 ===== ===== Yii2 =====
  
 +  * https://github.com/Mirocow/yii2-telegram-api :!:
   * https://github.com/SonkoDmitry/yii2-telegram-bot-api   * https://github.com/SonkoDmitry/yii2-telegram-bot-api
  
Строка 77: Строка 175:
  
   * http://habrahabr.ru/post/264035/   * http://habrahabr.ru/post/264035/
 +  * http://olegorestov.ru/this/bitrix_php_telegram_bot/
   * https://github.com/Surzhikov/TelegramSiteHelper/wiki/%D0%9A%D0%90%D0%9A-%D0%A3%D0%A1%D0%A2%D0%90%D0%9D%D0%9E%D0%92%D0%98%D0%A2%D0%AC   * https://github.com/Surzhikov/TelegramSiteHelper/wiki/%D0%9A%D0%90%D0%9A-%D0%A3%D0%A1%D0%A2%D0%90%D0%9D%D0%9E%D0%92%D0%98%D0%A2%D0%AC