pulpa/laravel-telegram-bot
Laravel Telegram Bot
This is a work in progress, feel free to watch this repo to stay tuned.
Requirements
- Laravel
5.4+
Installation
Install the package with composer:
composer require pulpa/laravel-telegram-bot
Add this service provider to your config/app.php file:
Pulpa\Telegram\Bot\Providers\ServiceProvider::class
Create a configuration file in config/bot.php and a controller
in app\Http\Controllers\BotController.php by running the
vendor:publish artisan command:
php artisan vendor:publish --provider="Pulpa\Telegram\Bot\Providers\ServiceProvider"
Open config/bot.php and set up your bot's name and token.
Once you finish your configuration, your bot's webhook URL will be available at:
yourdomain.com/<BotToken>
Where <BotToken> is obviously the bot token, duh!
Open the URL in your web browser and you should see a friendly message.
Usage
The method catchAll() within your BotController class will receive all
the updates coming from Telegram to your webhook, it will receive a parameter
of type Pulpa\Telegram\Bot\Update that is just a simple wrapper of the
original update object coming from Telegram.
use Pulpa\Telegram\Bot\Update;
use Pulpa\Telegram\Bot\Http\Controllers\Controller;
class BotController extends Controller
{
public function catchAll(Update $update)
{
// Log the text message
\Log::info($update->message->text);
}
}
Define methods in your BotController that will handle the incoming bot
commands, for example, method myBotCommand will be called when the
webhook recieves a command named my_bot_command.
use App\Chat;
use Pulpa\Telegram\Bot\Update;
use Pulpa\Telegram\Bot\Http\Controllers\Controller;
class BotController extends Controller
{
public function catchAll(Update $update)
{
// ...
}
public function start(Update $update)
{
// Register a new chat when command "start" is received.
Chat::register($update->message->chat->id);
}
}
If no method is defined for a command then the method catchAll() will be called instead.
More documentation is in progress
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.