Download the PHP package koot-labs/telegram-bot-dialogs without Composer
On this page you can find all versions of the php package koot-labs/telegram-bot-dialogs. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download koot-labs/telegram-bot-dialogs
More information about koot-labs/telegram-bot-dialogs
Files in koot-labs/telegram-bot-dialogs
Package telegram-bot-dialogs
Short Description Telegram Bot API PHP SDK extension that allows to implement dialogs in bots
License MIT
Homepage https://github.com/koot-labs/telegram-bot-dialogs
Informations about the package telegram-bot-dialogs
Dialogs plugin for Telegram Bot API PHP SDK
The extension for Telegram Bot API PHP SDK v3.1+ that allows to implement dialogs for telegram bots.
About this fork
Original package is not maintained anymore and does not support Telegram Bot API PHP SDK v3. The goal of the fork is to maintain the package compatible with the latest Telegram Bot API PHP SDK, PHP 8+ and Laravel features, focus on stability, better DX and readability.
Installation
You can install the package via Composer:
The package will automatically register itself.
You can publish the config file with:
It will create config/telegram.php
file that uses the following env variables:
TELEGRAM_DIALOGS_CACHE_DRIVER
:database
is default valueTELEGRAM_DIALOGS_CACHE_PREFIX
:tg_dialog_
is default value
Usage
- Create a Dialog class
- Create a Telegram command to activate Dialog from the Command.
- Setup your controller class to proceed active Dialog on income webhook request.
1. Create a Dialog class
Each dialog should be implemented as class that extends basic Dialog
as you can see in HelloExampleDialog or the code bellow:
2. Create a Telegram command
To initiate a dialog please use DialogManager
(or, if you use Laravel, Dialogs
Facade) — it will care about storing and recovering Dialog
instance state between steps/requests.
To execute the first and next steps please call Dialogs::proceed()
method with update object as an argument.
Also, it is possible to use dialogs with Telegram commands and DI through type hinting.
3. Setup your controller
Process request inside your Laravel webhook controller:
Dialog
class API
isEnd()
- Check the end of the dialog- 🔐
end()
- End dialog - 🔐
nextStep(string $stepName)
- Jump to the particular step, where$step
is thepublic
method name - 🔐
memory
- Laravel Collection to store intermediate data between steps
DialogManager
class API
DialogManager
is in charge of:
- storing and recovering Dialog instances between steps/requests
- running Dialog steps (using Dialog public API)
- switching/activating Dialogs
For Laravel apps, the package provides Dialogs
Facade, that proxies calls to DialogManager
class.
DialogManager
public API:
activate(\KootLabs\TelegramBotDialogs\Dialog $dialog)
- Activate a new Dialog (without running it). The same user/chat may have few open Dialogs, DialogManager should know which one is active.proceed(\Telegram\Bot\Objects\Update $update)
- Run the next step handler for the active Dialog (if exists)exists(\Telegram\Bot\Objects\Update $update)
- Check for existing Dialog for a given Update (based on chat_id and optional user_id)setBot(\Telegram\Bot\Api $bot)
- Use non-default Bot for Telegram Bot API calls
ToDo
Tasks to do for v1.0:
- [x] Add documentation and examples
- [x] Support for channel bots
- [ ] Improve test coverage
- [ ] Improve developer experience (cleaner API (similar method in Dialog and DialogManager))
- [ ] Reach message type validation
- [ ] Reach API to validate message types and content
- [ ] Support
\Iterator
s and/or\Generator
s for Dialog steps
Backward compatibility promise
Dialogs package uses Semver 2.0. This means that versions are tagged with MAJOR.MINOR.PATCH. Only a new major version will be allowed to break backward compatibility (BC).
Classes marked as @experimental
or @internal
are not included in our backward compatibility promise.
You are also not guaranteed that the value returned from a method is always the same.
You are guaranteed that the data type will not change.
PHP 8 introduced named arguments, which increased the cost and reduces flexibility for package maintainers. The names of the arguments for methods in Dialogs is not included in our BC promise.
All versions of telegram-bot-dialogs with dependencies
illuminate/collections Version ^8.0 || ^9.0 || ^10.0 || ^11.0
illuminate/support Version ^8.0 || ^9.0 || ^10.0 || ^11.0
irazasyed/telegram-bot-sdk Version ^3.1
predis/predis Version ^1.0 || ^2.0
psr/simple-cache Version ^3.0