Closed ranrinc closed 3 years ago
@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?
@pooriamo
@ranrinc Hi
1- After setting up the package, create a controller, for example
TelegramController.php
in youapp/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!
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?