Доброго времени суток. Хотел сделать более-менее простенького бота, с использованием Laravel 5.3 и Telegram Bot API PHP SDK (ссылка). Сам сайт держу на локалке. Документация к SDK имеется, но я никак не могу разобраться с интеграцией этого всего в Laravel. Бота зарегистрировал, даже смог получить данные своего бота (id, логин, полное имя).
<?php
namespace App\Http\Controllers;
use Telegram\Bot\Laravel\Facades\Telegram;
class TelegramController extends Controller
{
public function index()
{
$telegram = new Api(config('telegram.bot_token'));
dd($response = $telegram->setWebhook([
'url' => 'https://telebot.dev/<token>',
'certificate' => '/my.pem'
]));
}
}
А как я могу зарегистрировать простые команды типа /help, /start, чтобы бот отвечал на них. По умолчанию имеется команда /help, обработчик находится в недрах SDK, но всё равно бот на них никак не реагирует.
<?php
namespace Telegram\Bot\Commands;
/**
* Class HelpCommand.
*/
class HelpCommand extends Command
{
/**
* @var string Command Name
*/
protected $name = 'help';
/**
* @var string Command Description
*/
protected $description = 'Help command, Get a list of commands';
/**
* {@inheritdoc}
*/
public function handle($arguments)
{
$commands = $this->telegram->getCommands();
$text = '';
foreach ($commands as $name => $handler) {
$text .= sprintf('/%s - %s'.PHP_EOL, $name, $handler->getDescription());
}
$this->replyWithMessage(compact('text'));
}
}
Третий день бьюсь... Заранее спасибо!
1) Ты должен создать правильный путь
Route::post('/' . config('telegram.bot_token'), function (Request $request) {
$update = Telegram::commandsHandler(true);
return 'ok';
});
2) Ну и мой пример команды старт
class StartCommand extends Command {
protected $name = "start";
/**
* @var string Command Description
*/
protected $description = "Команда для начала общения с ботом";
/**
* @inheritdoc
*/
public function handle($arguments)
{
$this->replyWithMessage(['text' => 'Привет я Бот, вот список команд которые вам доступны:']);
// Посылаем статус что печатаем
$this->replyWithChatAction(['action' => Actions::TYPING]);
$commands = $this->getTelegram()->getCommands();
// Строим список команд
$response = '';
foreach ($commands as $name => $command) {
$response .= sprintf('/%s - %s' . PHP_EOL, $name, $command->getDescription());
}
//Посылаем ответ
$this->replyWithMessage(['text' => $response]);
}
}
3) И конечно же проверь, отослал ли ты сертификат, потому как без него ты послать по-моему ничего не можешь
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
в переменную html вообще не записывается ничего var_dump - bool(false), что это может быть ?
Я прохожу практику , мне дали задание сделать счетчик статистики (самый простой )Я его сделал , теперь попросили сделать так что бы показывали...