1. Go to this page and download the library: Download mateodioev/tg-handler library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mateodioev / tg-handler example snippets
use Mateodioev\TgHandler\Bot;
$bot = new Bot($botToken);
$bot->onEvent(YourCommandInstance);
$bot->byWebhook();
// or
$bot->longPolling($timeout); // No needs server with ssl
use Mateodioev\TgHandler\Commands\MessageCommand;
use Mateodioev\Bots\Telegram\Api;
use Mateodioev\TgHandler\Context;
class MyCommand extends MessageCommand
{
protected string $name = 'start';
protected string $description = 'Start the bot';
public function handle(Api $bot, Context $context){
// TODO: Implement handle() method.
$bot->sendMessage($context->getChatId(), 'Hello!!!');
}
}
$bot->onEvent(MyCommand::get());
class MyCommand extends MessageCommand
{
protected string $name = 'start';
protected string $description = 'Start the bot';
protected array $prefix = ['/', '!'];
// Additionally you can add command aliases
protected array $alias = ['help'];
...
}
// or
$myCommand = MyCommand::get();
$myCommand->setPrefixes(['/', '!']); // Set prefix, no need to set `$prefix` property
class MyCommand extends MessageCommand
{
protected string $name = 'start';
protected string $description = 'Start the bot';
protected array $middlewares = [
'authUser'
];
public function handle(Api $bot, Context $context, array $args = []){
// $args[0] is the result of the middleware authUser
// Your logic here
}
}
// Your middleware function
function authUser(Context $ctx, Api $bot) {
$user = User::find($ctx->getUserId());
if (!$user) {
$bot->replyTo($ctx->getChatId(), 'You are not authorized', $ctx->getMessageId())
throw new \Mateodioev\TgHandler\Commands\StopCommand(); // Stop command execution
}
return $user;
}
use Mateodioev\Bots\Telegram\Api;
use Mateodioev\TgHandler\Context;
[\Mateodioev\TgHandler\Filters\FilterFromUserId(996202950)];
class FilterCommand extends MessageCommand
{
protected string $name = 'filter';
public function handle(Api $bot, Context $context, array $args = [])
{
}
}
use Mateodioev\TgHandler\Events\Types\MessageEvent;
use Mateodioev\TgHandler\Filters\{FilterCollection, FilterMessageChat, FilterMessageRegex};
#[FilterCollection(
new FilterMessageChat(TestChat::CHAT_ID),
new FilterMessageRegex('/.*(mt?proto).*/i')
)]
class TestChat extends MessageEvent {
const CHAT_ID = 'Put your chat id here';
public function execute(Api $bot, Context $context, array $args = []) {
// your logic here
}
}
use Mateodioev\TgHandler\Events\Types\MessageEvent;
use Mateodioev\TgHandler\Filters\{FilterCollection, FilterMessageChat, FilterMessageRegex};
#[FilterMessageChat(TestChat::CHAT_ID), FilterMessageRegex('/.*(filters).*/i')]
class TestChat extends MessageEvent {
const CHAT_ID = 'Put your chat id here';
public function execute(Api $bot, Context $context, array $args = []) {
// your logic here
}
}
use Mateodioev\Bots\Telegram\Api;
use Mateodioev\TgHandler\Context;
use Mateodioev\TgHandler\Conversations\MessageConversation;
class MyConversation extends MessageConversation
{
// This is optional, only for validate the user input message
protected string $format = 'My name is {w:name}';
public function execute(Api $bot, Context $context, array $args = [])
{
$bot->sendMessage(
$context->getChatId(),
'Nice to meet you ' . $this->param('name')
);
}
}
use Mateodioev\Bots\Telegram\Api;
use Mateodioev\TgHandler\Commands\MessageCommand;
use Mateodioev\TgHandler\Context;
class Name extends MessageCommand
{
protected string $name = 'name';
public function handle(Api $bot, Context $context, array $args = [])
{
$bot->replyTo(
$context->getChatId(),
'Please give me your name:',
$context->getMessageId(),
);
// Register next conversation handler
return nameConversation::new($context->getChatId(), $context->getUserId());
}
}
$bot->onEvent(Name::get());
use Mateodioev\TgHandler\Log\{Logger, TerminalStream};
$log = new Logger(new TerminalStream); // Print logs in terminal
$bot->setLogger($log); // Save logger
use Mateodioev\TgHandler\Log\{BulkStream, Logger, TerminalStream, PhpNativeStream};
BulkStream::add(new TerminalStream); // print logs in terminal
BulkStream::add((new PhpNativeStream)->activate(__DIR__)); // save logs in .log file and catch php warnings
$bot->setLogger(new Logger(new BulkStream));
use Mateodioev\TgHandler\Log\{Logger, TerminalStream};
$log = new Logger(new TerminalStream);
// disable all logs
$log->setLevel(Logger:ALL, false);
// Enable only critical, error and emergency messages
$log->setLevel(Logger::CRITICAL | Logger::ERROR | Logger::EMERGENCY);
$bot->setLogger($log);
$bot->getLogger()->debug('This is a debug message');
// output: [Y-m-d H:i:s] [DEBUG] This is a debug message
$bot->getLogger()->info('This is a debug message with {paramName}', [
'paramName' => 'context params'
]);
// output: [Y-m-d H:i:s] [INFO] This is a debug message with context params
use Mateodioev\TgHandler\Commands\MessageCommand;
use Mateodioev\Bots\Telegram\Api;
use Mateodioev\TgHandler\Context;
class MyCommand extends MessageCommand
{
protected string $name = 'start';
protected string $description = 'Start the bot';
public function handle(Api $bot, Context $context)
{
$this->logger()->debug('Loging inside event');
$this->logger()->info('User {name} use the command {commandName}', [
'name' => $context->getUserName() ?? 'null',
'commandName' => $this->name
]);
}
}
// register the command
$bot->onEvent(MyCommand::get());
// Base exception
class UserException extends \Exception
{}
// Specific exception
final class UserNotRegistered extends UserException {}
final class UserBanned extends UserException {}
// This only manage UserBanned exception
$bot->setExceptionHandler(UserBanned::class, function (UserBanned $e, Bot $bot, Context $ctx) {
$bot->getApi()->sendMessage($ctx->getChatId(), 'You are banned');
});
// This manage all UserException sub classes
$bot->setExceptionHandler(UserException::class, function (UserException $e, Bot $bot, Context $ctx) {
$bot->getLogger()->warning('Ocurrs an user exception in chat id: ' . $ctx->getChatId());
});
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.