Inspiration: telegraf, irazasyed/telegram-bot-sdk
- PHP 7.2
- Composer
composer require askoldex/teletant
require_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
use Askoldex\Teletant\Bot;
use Askoldex\Teletant\Context;
use Askoldex\Teletant\Settings;
$settings = new Settings('token');
$settings->setHookOnFirstRequest(false);
$bot = new Bot($settings);
$bot->polling();
$bot->listen();
$bot->onCommand('start', function (Context $ctx) {
$ctx->reply('Hello world');
});
Message field handler
$bot->onMessage('sticker', function (Context $ctx) {
$ctx->reply('Nice sticker!');
});
Update field handler
$bot->onUpdate('message', function (Context $ctx) {
$ctx->reply('Answer on any message (text, sticker, photo, etc.)');
});
CallbackQuery "data" field handler
$bot->onAction('like', function (Context $ctx) {
$ctx->reply('You pressed the button with callaback_data=like');
});
$bot->onHears('fu*k', function (Context $ctx) {
$ctx->reply('Stop! If you continue, you will be banned');
});
Or use array substrings
$bot->onHears(['di*k', 'f**k'], function (Context $ctx) {
$ctx->reply('Stop! If you continue, you will be banned');
});
$bot->onText('/message {user:integer} {message:string}', function (Context $ctx) {
$ctx->withVars()->reply("User id: {v-user}\nMessage: {v-message}");
});
Parameter without validation type syntax: {name}
Optional parameter without validation type syntax: {name?}
Parameter syntax: {name:validator_name}
Optional parameter syntax: {name:validation_name?}\If you need >2 spaced parameters. For example:
/msg {a:string} {b:string}. If message text will be "/msg hello world guys". Variable values will be: a = hello world, b = guys).
To explicitly separate variables you need to use Boxed variables:
Syntax: {name:string:box}
Example: /msg {name:string:"} {msg:string:"}
In result you getcommand with syntax:
/msg "{name:string}" "{msg:string}"
Example: /msg "John Smith" "hello world"
Variables: name=John Smith, msg=hello world.
Boxed variable may be optional, syntax: {name:type:box?}
Default validation types
Validator | Pattern |
---|---|
integer | [\d]+ |
float | -?\d+(.\d+)? |
string | [\w\s]+ |
word | [\w]+ |
char | [\w] |
any | (.*?) |
Validator "any" used as default ({name} == {name:any})
Event | Argument supporting |
---|---|
onStart | NO |
onPoll | NO |
onPollAnswer | NO |
onDice | NO |
onText | YES |
onAction | YES |
onHears | YES |
onCommand | NO |
onMessage | NO |
onUpdate | NO |
onInlineQuery | YES |