Skip to content

alverspb/teletant

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Teletant Framework

Examples

Click

Getting Started

Requirements

  1. PHP 7.2
  2. Composer

Installation

composer require askoldex/teletant

Usage

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);

Run as long poll (getUpdates)

$bot->polling();

Run as webhook (listen webhook address)

$bot->listen();

Fast Examples:

Making command
$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');
});
Find substring in Message text
$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');
});
Making command with parameters
$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

About

Telegram Bot Framework

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%