Telegram BOT API (Yii2)
Создание / Регистрация бота
Описание реализации на mirocow/yii2-telegram-api
Пример реализации на 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
Пример реализации на 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
- http://www.startssl.com/ (free for noncommerce)
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(); } } }
Исходники
Yii2
PHP
Examples / Примеры
- https://github.com/kolar/telegram-poll-bot (Longpoll)