m1lkin/looksmaxxer

A powerful, strictly typed PHP library for the MAX bot platform.

Maintainers

Package info

github.com/i0ze/looksmaxxer

Homepage

Issues

pkg:composer/m1lkin/looksmaxxer

Statistics

Installs: 12

Dependents: 0

Suggesters: 0

Stars: 0

v1.0.1 2026-01-16 10:47 UTC

This package is auto-updated.

Last update: 2026-03-16 11:13:20 UTC


README

Мощная, типизированная и удобная PHP библиотека для платформы ботов MAX.

Особенности

  • Bot Framework: Встроенный класс Bot с поддержкой событий (onMessage, onLocation, onCommand и др.).
  • Режимы работы: Поддержка как Long Polling (разработка), так и Webhook (продакшен).
  • Строгая типизация: Использует PHP 8.2+, Enums и DTO.
  • Удобные геттеры: Доступ к координатам и контактам через методы $message->getLocation().
  • Безопасность: Никаких "сырых" массивов при работе с клавиатурами и медиа.

Установка

composer require m1lkin/looksmaxxer

Быстрый старт

1. Обработка геолокации и контактов

Когда пользователь нажимает кнопку запроса данных, боту приходит сообщение с вложением.

use Looksmaxxer\Bot;
use Looksmaxxer\Models\Update;
use Looksmaxxer\Client;
use Looksmaxxer\Models\Keyboard\InlineKeyboard;
use Looksmaxxer\Models\Keyboard\Button;
use Looksmaxxer\Builders\MessageBuilder;

$bot = new Bot('TOKEN');

// 1. Отправляем кнопку запроса
$bot->onCommand('start', function(Update $update, Client $client) {
    $kb = InlineKeyboard::create()
        ->addRow(Button::requestGeoLocation('Где я?', quick: true));
        
    $client->sendMessage(
        MessageBuilder::create(chatId: $update->chatId)
            ->text('Нажми на кнопку ниже:')
            ->inlineKeyboard($kb)
    );
});

// 2. Обрабатываем ответ
$bot->onLocation(function(Update $update, Client $client) {
    $location = $update->message->getLocation();
    echo "Широта: {$location->latitude}, Долгота: {$location->longitude}";
});

// Запуск (Long Polling для тестов)
$bot->start();

Использование в Production (Webhook)

Для боевого режима создайте файл (например, webhook.php), настройте веб-сервер на этот файл и укажите его URL в настройках бота.

// webhook.php
require 'vendor/autoload.php';

use Looksmaxxer\Bot;

$bot = new Bot('TOKEN');

$bot->onMessage(function($update, $client) {
    // Ваша логика
    $client->sendMessage(
        \Looksmaxxer\Builders\MessageBuilder::create(chatId: $update->chatId)->text('Привет из Webhook!')
    );
});

// Обработка входящего запроса
$bot->handleWebhook();

Фильтрация кнопок (Callback)

$bot->onCallbackQuery('confirm_order', function(Update $update, Client $client) {
    // Пользователь нажал кнопку с payload "confirm_order"
    $client->sendMessage(
        MessageBuilder::create(chatId: $update->chatId)->text('Заказ подтвержден!')
    );
});

Команды и Текст

$bot->onCommand('help', function($u, $c) { /* ... */ });

$bot->onText('/купи|продай/i', function($u, $c) {
    // Сработает на сообщения "купи", "Продай" и т.д.
});

Тестирование

vendor/bin/phpunit

Лицензия

MIT