defstudio / telegraph

Telegraph is a Laravel package for fluently interacting with Telegram Bots
MIT License
697 stars 118 forks source link

Add router #406

Closed sadegh19b closed 9 months ago

sadegh19b commented 1 year ago

Hi, I have a suggestion for this great package. It would be great if a router could be added.

I will give some examples:

TelegraphRouter::command('start', [\App\Telegraph\Controllers\BotMenuController::class, 'start']);

TelegraphRouter::callback('cancel', function (\DefStudio\Telegraph\Models\TelegraphChat $chat, \DefStudio\Telegraph\DTO\CallbackQuery $callbackQuery, \Illuminate\Support\Collection $data) {
    // do something
});

TelegraphRouter::message('❌ Cancel', \App\Telegraph\Controllers\BotMenuController::class)->middleware(\App\Telegraph\Middleware\CheckCancel::class);

A router is similar to the Laravel router, which can be used for commands, callback queries, and messages. action it can be called by closure, an invokable controller, or as an array whose first index is the controller and the second index is the method. It can also have middleware like Laravel for more flexibility.

A file called telegraph.php can be created in the routes folder to define the routes there.

If it's implementing these things, it will be great and this package will be more useful.

fabio-ivona commented 1 year ago

Hi!

like this idea, will further explore it in v2 which we'll start developing in the next months