Telegram BOT API (Yii2)

@BotFather

Пример реализации на mirocow/yii2-telegram-api

Настройка

'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',
                    ],
            ],
], 

Запуск бота

$ php ./yii mirocow\telegram\bot

Бот имеет возможность поддержки опций запуска options

Создание команд бота

nano app\commands\HelpCommand

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;
 
    }
 
}

Отправка сообщений

 

Пример реализации на akalongman/php-telegram-bot

Webhook

Простой пример приветствия завязанного на Webhook, реализованного на Yii2 с помощью. Обязательное наличиче SSL. И хук должен отправляться на https:

class APIController {
 
  public $API_KEY = 'your_bot_api_key';
  public $BOT_NAME = 'namebot';
  public $API_CERTIFICATE = '';
 
  public function init(){
 
    try {
        $telegram = new Longman\TelegramBot\Telegram($this->API_KEY, $this->BOT_NAME);
 
        echo $telegram->setWebHook('https://yourdomain/api/init', $this->API_CERTIFICATE);
    } catch (Longman\TelegramBot\Exception\TelegramException $e) {
        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();
    }    
 
  }  
 
}  

SSL for WebHook

getUpdates

Другой метод не требует наличия SSL - это getUpdates

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();
    }    
 
  }  
 
}  

PHP

Examples / Примеры

API