php-telegram-bot / laravel

Laravel package for PHP Telegram Bot Library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Example of working Laravel

ranrinc opened this issue · comments

Hi there,

its been a while and there are no example on how to used it? Maybe We can get one example of working command? Thanks?

@ranrinc
Hi

1- After setting up the package, create a controller, for example TelegramController.php in you app/Http/Controllers directory and put this in it:

<?php
namespace App\Http\Controllers;

use PhpTelegramBot\Laravel\PhpTelegramBotContract;

class TelegramController extends Controller {
    public function set(PhpTelegramBotContract $telegram_bot) {
        return $telegram_bot->setWebhook(url(config('phptelegrambot.bot.api_key') . '/hook'));
    }

    public function hook(PhpTelegramBotContract $telegram_bot) {
        $telegram_bot->handle();
    }
}

2- Now you need to write routes for these actions. so open your web.php and write:

$router->group(['prefix' => '[YOUR BOT API KEY]', function() use ($router) {
    $router->get('set', 'TelegramController@set');
    $router->post('hook', 'TelegramController@hook');
});

replace [YOUR BOT API KEY] with the API key that BotFather has given you. This is to make secure the hook url to ensure the incoming requests are from no one but Telegram.

3- Go to https://yoursite.com/[YOUR BOT API KEY]/set
You should see the success message.

4- Create a directory for your commands. It can be anywhere, for example app/Telegram/Commands/[CommandNameCommand].php would be nice.

This is an example StartCommand.php:

<?php
namespace Longman\TelegramBot\Commands\SystemCommands;

use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Request;

class StartCommand extends SystemCommand {
	protected $name = 'start';
	protected $usage = '/start';

	public function execute()
	{
		$message = $this->getMessage();

        	$chat_id = $message->getChat()->getId();
        	$text    = 'Hi! Welcome to my bot!';

        	$data = [
            		'chat_id' => $chat_id,
            		'text'    => $text,
        	];

        	return Request::sendMessage($data);
	}
}

5- The last thing you need to do is to add your custom commands directory to the bot's config. so open config/phptelegrambot.php and add the commands directory to the array:

...
'commands' => [
        'before'  => true,
        'paths'   => [
            base_path('/app/Telegram/Commands')
        ],
        'configs' => [
            // Custom commands configs
        ],
],
...

That's it all.

@pooriamo yeah... thank you so much.. finally someone explain.

@pooriamo thank you for the given example. Could you please send PR and add some examples in EXAMPLES.md or somewhere?

@ranrinc
Hi

1- After setting up the package, create a controller, for example TelegramController.php in you app/Http/Controllers directory and put this in it:

<?php
namespace App\Http\Controllers;

use PhpTelegramBot\Laravel\PhpTelegramBotContract;

class TelegramController extends Controller {
    public function set(PhpTelegramBotContract $telegram_bot) {
        return $telegram_bot->setWebhook(url(config('phptelegrambot.bot.api_key') . '/hook'));
    }

    public function hook(PhpTelegramBotContract $telegram_bot) {
        $telegram_bot->handle();
    }
}

2- Now you need to write routes for these actions. so open your web.php and write:

$router->group(['prefix' => '[YOUR BOT API KEY]', function() use ($router) {
    $router->get('set', 'TelegramController@set');
    $router->post('hook', 'TelegramController@hook');
});

replace [YOUR BOT API KEY] with the API key that BotFather has given you. This is to make secure the hook url to ensure the incoming requests are from no one but Telegram.

3- Go to https://yoursite.com/[YOUR BOT API KEY]/set
You should see the success message.

4- Create a directory for your commands. It can be anywhere, for example app/Telegram/Commands/[CommandNameCommand].php would be nice.

This is an example StartCommand.php:

<?php
namespace Longman\TelegramBot\Commands\SystemCommands;

use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Request;

class StartCommand extends SystemCommand {
	protected $name = 'start';
	protected $usage = '/start';

	public function execute()
	{
		$message = $this->getMessage();

        	$chat_id = $message->getChat()->getId();
        	$text    = 'Hi! Welcome to my bot!';

        	$data = [
            		'chat_id' => $chat_id,
            		'text'    => $text,
        	];

        	return Request::sendMessage($data);
	}
}

5- The last thing you need to do is to add your custom commands directory to the bot's config. so open config/phptelegrambot.php and add the commands directory to the array:

...
'commands' => [
        'before'  => true,
        'paths'   => [
            base_path('/app/Telegram/Commands')
        ],
        'configs' => [
            // Custom commands configs
        ],
],
...

That's it all.

There is a fault, It should be add "/":
base_path('/app/Telegram/Commands/')
or will do not work.

@akalongman I'm sorry I just saw your message. I just created a PR.

I'll close off here, as there is a wonderful example available now!