PHPackages                             tbot/laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. tbot/laravel

ActiveLibrary

tbot/laravel
============

Telegram bot SDK package for Laravel

25.0.2(4mo ago)0911↓50%MITPHP

Since Sep 27Pushed 4mo agoCompare

[ Source](https://github.com/grisha-sychev/telegram-api-bot-laravel)[ Packagist](https://packagist.org/packages/tbot/laravel)[ RSS](/packages/tbot-laravel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

Telegram Bot SDK Laravel
========================

[](#telegram-bot-sdk-laravel)

Фреймворк для создания Telegram ботов на Laravel с поддержкой мультибота и разделением окружений.

Возможности
-----------

[](#возможности)

- 🤖 **Мультиботная архитектура** - управление множественными ботами
- 🔄 **Разделение окружений** - отдельные токены и домены для dev/prod
- 🌍 **i18n поддержка** - встроенная система интернационализации без зависимостей
- 🛠️ **Интерактивные команды** - удобное управление через CLI
- 🔐 **Безопасность** - webhook secrets, валидация токенов
- 📊 **Мониторинг** - проверка здоровья ботов, метрики
- 🗄️ **База данных** - хранение настроек и состояний
- 🚀 **Готовые команды** - быстрая настройка и развертывание

Установка
---------

[](#установка)

```
composer require tbot/laravel
```

### Публикация файлов

[](#публикация-файлов)

Стандартная публикация (пропускает существующие файлы)

```
php artisan bot:publish
```

Публикация с принудительным обновлением

```
php artisan bot:publish --force
```

Публикация конкретных компонентов

```
php artisan bot:publish --tag=bot-config --force
```

или

```
php artisan bot:publish --tag=bot-app --force
```

### Миграции

[](#миграции)

```
php artisan migrate
```

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

[](#быстрый-старт)

### 1. Создание бота

[](#1-создание-бота)

```
php artisan bot:new
```

Команда проведет вас через интерактивную настройку:

- Ввод имени бота
- Настройка токена
- Указание администраторов
- Настройка webhook

### 2. Управление ботами

[](#2-управление-ботами)

```
# Список всех ботов
php artisan bot:manage list

# Информация о конкретном боте
php artisan bot:manage show mybot

# Активация/деактивация бота
php artisan bot:manage enable mybot
php artisan bot:manage disable mybot

# Тестирование бота
php artisan bot:manage test mybot
```

### 3. Управление доменами

[](#3-управление-доменами)

```
# Установка домена для окружения
php artisan bot:domain set mybot dev https://dev.example.com
php artisan bot:domain set mybot prod https://example.com

# Просмотр доменов бота
php artisan bot:domain show mybot

# Список всех доменов
php artisan bot:domain list
```

### 4. Управление webhook

[](#4-управление-webhook)

```
# Настройка webhook (автоматически использует домен из БД)
php artisan bot:webhook set mybot

# Информация о webhook
php artisan bot:webhook info mybot

# Удаление webhook
php artisan bot:webhook delete mybot

# Тестирование webhook
php artisan bot:webhook test mybot
```

### 5. Управление окружениями

[](#5-управление-окружениями)

```
# Переключение на dev окружение
php artisan bot:env dev

# Переключение на prod окружение
php artisan bot:env prod

# Сброс к значению из env файла
php artisan bot:env dev --reset
```

### 6. Публикация файлов

[](#6-публикация-файлов)

```
# Публикация всех файлов
php artisan bot:publish

# Принудительное обновление всех файлов
php artisan bot:publish --force

# Обновление конкретных компонентов
php artisan bot:publish --tag=bot-config --force
php artisan bot:publish --tag=bot-app --force
php artisan bot:publish --tag=bot-routes --force
```

Разделение окружений
--------------------

[](#разделение-окружений)

Фреймворк использует единую структуру для токенов и webhook URL:

### Токены

[](#токены)

- `token` - токен бота

### Webhook URL

[](#webhook-url)

- `webhook_url` - полный URL webhook с доменом (например: )

### Примеры использования

[](#примеры-использования)

```
// В коде бота
$bot = Bot::find(1);

// Получение токена
$token = $bot->token;

// Получение webhook URL
$webhookUrl = $bot->webhook_url;

// Проверка наличия токена
if ($bot->hasToken()) {
    // Бот имеет токен
}

// Проверка наличия webhook URL
if ($bot->hasWebhookUrl()) {
    // Бот имеет настроенный webhook
}
```

Структура проекта
-----------------

[](#структура-проекта)

```
app/
├── Bots/                    # Классы ботов
│   ├── AbstractBot.php     # Базовый класс бота
│   └── MyBot.php          # Ваш бот
├── Console/Commands/       # CLI команды
│   ├── BotCommand.php     # Управление ботами
│   ├── SetupCommand.php   # Настройка ботов
│   ├── WebhookCommand.php # Управление webhook
│   └── DomainCommand.php  # Управление доменами
└── Models/
    └── Bot.php            # Модель бота

config/
└── bot.php               # Конфигурация

database/migrations/      # Миграции БД

```

Конфигурация
------------

[](#конфигурация)

Основные настройки в `config/bot.php`:

```
return [
    'multibot' => [
        'enabled' => true,
        'auto_create_classes' => true,
        'bots_path' => 'App\\Bots',
    ],

    'webhook' => [
        'base_url' => env('BOT_WEBHOOK_BASE_URL', env('APP_URL')),
        'auto_generate_secret' => true,
    ],

    'security' => [
        'webhook_secret' => env('BOT_WEBHOOK_SECRET'),
        'admin_ids' => array_filter(explode(',', env('BOT_ADMIN_IDS', ''))),
    ],
];
```

Команды
-------

[](#команды)

### Основные команды

[](#основные-команды)

КомандаОписание`bot:new`Создание нового бота`bot:manage list`Список всех ботов`bot:manage show {bot}`Информация о боте`bot:manage test {bot}`Тестирование бота`bot:webhook set {bot}`Настройка webhook`bot:domain set {bot} {env} {domain}`Установка домена### Управление доменами

[](#управление-доменами)

КомандаОписание`bot:domain set {bot} {env} {domain}`Установка домена`bot:domain show {bot}`Просмотр доменов бота`bot:domain list`Список всех доменов### Управление webhook

[](#управление-webhook)

КомандаОписание`bot:webhook set {bot} {url?}`Настройка webhook`bot:webhook info {bot}`Информация о webhook`bot:webhook delete {bot}`Удаление webhook`bot:webhook test {bot}`Тестирование webhookИнтернационализация (i18n)
--------------------------

[](#интернационализация-i18n)

Фреймворк включает встроенную систему интернационализации без внешних зависимостей:

### Использование модуля

[](#использование-модуля)

Добавьте I18nModule в ваш бот:

```
use Bot\Modules\I18nModule;

class MyBot extends LightBot
{
    use I18nModule;

    public function start()
    {
        // Автоматический перевод в sendSelf/sendOut
        $this->sendSelf('messages.welcome', [
            ['messages.button.start'],
            ['messages.button.help']
        ]);
    }
}
```

### Ручной перевод

[](#ручной-перевод)

```
// Перевод с параметрами
$greeting = $this->translate('messages.user.greeting', ['name' => 'John']);

// Перевод массивов
$buttons = $this->translateArray([
    ['messages.button.start'],
    ['messages.button.help']
]);
```

### Файлы переводов

[](#файлы-переводов)

Создайте файлы переводов в `resources/lang/{locale}/`:

```
// resources/lang/en/messages.php
return [
    'welcome' => 'Welcome to our bot!',
    'button' => [
        'start' => 'Start',
        'help' => 'Help',
    ],
    'user' => [
        'greeting' => 'Hello, :name!',
    ],
];
```

Подробная документация: [I18N\_USAGE.md](I18N_USAGE.md)

Создание бота
-------------

[](#создание-бота)

После создания бота автоматически генерируется класс:

```
