定制 phpsoftbox/telegram 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phpsoftbox/telegram

Composer 安装命令:

composer require phpsoftbox/telegram

包简介

Telegram bot builder for the PhpSoftBox framework

README 文档

README

About

phpsoftbox/telegram — компонент для построения Telegram-ботов: команды, обработчики, диалоги (Q&A) и веб-хук.

Ключевые возможности:

  • подключение к Telegram API и работа с webhook;
  • роутинг команд и сообщений по типу;
  • диалоги с вопросами, отменой и сбором данных;
  • flow engine для централизованного описания переходов и guard-условий;
  • авторизация через Telegram Login Widget;
  • очистка сообщений для «чистого экрана».

Quick Start

Основная идея: Bot принимает update, сначала пытается продолжить активный диалог, затем отдает управление UpdateRouter.

use PhpSoftBox\Telegram\Api\TelegramClient;
use PhpSoftBox\Telegram\Bot\Bot;
use PhpSoftBox\Telegram\Conversation\ArrayConversationStore;
use PhpSoftBox\Telegram\Conversation\ConversationDefinition;
use PhpSoftBox\Telegram\Conversation\ConversationManager;
use PhpSoftBox\Telegram\Conversation\QuestionStep;
use PhpSoftBox\Telegram\Router\UpdateRouter;
use PhpSoftBox\Telegram\Webhook\WebhookHandler;

$client = new TelegramClient(
    token: $_ENV['TELEGRAM_BOT_TOKEN'],
    httpClient: $httpClient,
    requestFactory: $requestFactory,
    streamFactory: $streamFactory,
);

$router = new UpdateRouter();
$router->command('start', static function ($update, $context): void {
    $context->sendMessage($update->chatId(), 'Привет!');
});

$store = new ArrayConversationStore();
$conversations = new ConversationManager($store, $client);
$conversations->register(new ConversationDefinition('workspace.create', [
    new QuestionStep('name', 'Название воркспейса?'),
    new QuestionStep('description', 'Описание воркспейса?'),
]));

$router->command('workspace', static function ($update, $context) use ($conversations): void {
    $conversations->start('workspace.create', $update);
});

$bot = new Bot($client, $router, $conversations);
$handler = new WebhookHandler($bot, $responseFactory, $streamFactory);

$response = $handler->handle($request);

Команды и обработчики

Команды и хендлеры регистрируются в UpdateRouter. Можно слушать текстовые сообщения, типы сообщений и fallback.

use PhpSoftBox\Telegram\Update\MessageTypeEnum;

$router->command('start', fn ($update, $context) => ...);
$router->onText(fn ($update, $context) => ...);
$router->onCallbackData('trial:start', fn ($update, $context) => ...);
$router->onCallbackQuery(fn ($update, $context) => ...);
$router->onType(MessageTypeEnum::PHOTO, fn ($update, $context) => ...);
$router->fallback(fn ($update, $context) => ...);

Конфигурация бота

Если команд много, используйте TelegramBotBuilder и описывайте команды по файлам в config/telegram или через атрибуты.

use PhpSoftBox\Telegram\Builder\TelegramBotBuilder;

return static function (TelegramBotBuilder $bot): void {
    $bot->command('start', StartCommand::class);
    $bot->command('reset', ResetCommand::class);
};

Несколько ботов

Можно держать несколько ботов, разделяя их по имени в конфиге (auth, main, news) и указывая default.

Диалоги (Q&A)

Диалоги строятся из последовательности шагов. Шаг может парсить и валидировать ответ пользователя.

$definition = new ConversationDefinition('workspace.edit', [
    new QuestionStep('name', 'Новое название?'),
    new QuestionStep('description', 'Новое описание?'),
]);
$definition = $definition->withCancelKeywords(['/cancel', 'cancel']);

$conversations->register($definition);
$conversations->start('workspace.edit', $update);

Авторизация через Telegram

Авторизация вынесена в отдельный пакет phpsoftbox/telegram-auth.

Файлы

Если в update приходит file_id (фото, видео, документ), файл можно скачать через downloadFile:

$fileId = $update->message()?->value();
if ($fileId !== null) {
    $client->downloadFile($fileId, __DIR__ . '/storage/file.bin');
}

Оглавление

Дополнения

  • phpsoftbox/telegram-auth — авторизация через Telegram Login Widget.
  • phpsoftbox/telegram-mongo — MongoDB-хранилище диалогов.

phpsoftbox/telegram 适用场景与选型建议

phpsoftbox/telegram 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 87 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 06 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 phpsoftbox/telegram 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 phpsoftbox/telegram 我们能提供哪些服务?
定制开发 / 二次开发

基于 phpsoftbox/telegram 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 87
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 12
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-06