teapodsoft / slim-app-telegram
TeapodSoft Telegram Bot Integrations
Package info
github.com/teapodsoft/slim-app-telegram
Type:project
pkg:composer/teapodsoft/slim-app-telegram
Requires
- php: >=8.4
- php-di/php-di: ^7.1
- slim/psr7: 1.8.*
- slim/slim: 4.*
- teapodlibs/composer: 1.0.0
- teapodlibs/env: 1.0.0
- teapodlibs/secrets: 1.0.0
- telegram-bot/api: *
- zircote/swagger-php: ^6.0
Requires (Dev)
- ext-json: *
- jangregor/phpstan-prophecy: 2.*
- phpspec/prophecy-phpunit: v2.4.*
- phpstan/extension-installer: 1.4.*
- phpstan/phpstan: 2.1.*
- phpunit/phpunit: 12.5.*
- squizlabs/php_codesniffer: 4.0.*
README
Основная задача данного проекта - предоставить разработчику возможность легко и быстро запустить бота для работы с Telegram.
Требования
- Хостинг с поддержкой PHP 8.4 или выше и Apache
- SSL сертификат для домена (подойдет и Let's encrypt)
Структура проекта
Приложение построено по следующей структуре:
configs/ Файлы настроек приложения
config.php Файл с настройками приложения
routes.php Файл с настройками ссылок и обработчиков
docker/ Директория для создания образа Docker
public/ Основная директория работы приложения
index.php Основной файл для работы приложения
secrets/ Директория с секретными данными для работы окружения
src/ Исходный код приложения
Applications/ Директория с проектом и необходимым настройками
Middlewares/ Директория с обработчиками Middleware
ResponseEmiter/ Директория с обработчиками Response запросов
Settings/ Директория с настройками и обработчиками
Base/ Директория с базовыми классами для работы
Composer/ Директория для работы с Composer и действия postInstall событиями
Routes/ Обработчики для ссылок configs/routes.php
Bot/ Обработчики запросов для Telegram Bot
Telegram/ Обработчики для Telegram
Commands/ Обработчики команд для Telegram
tests/ Тесты для проверки работоспособности
vendor/ Директория с установленными Composer пакетами
Установка
Установка локально для последующей загрузки на хостинг
Для того, что бы установить приложение и загрузить итоговый вариант на хостинг потребуется наличие Docker на локальном месте и дополнения Docker Compose.
Подготовка проекта к работе
Для локального разворота потребуется настроить файл .env. Для этого скопируйте шаблонный .env.dist через команду
cp .env.dist .env
Для разворота используйте команду и дождитесь итоговой сборки:
docker compose up -d
Установка с использованием Composer на хостинге
Если у вас нет Composer, вы можете использовать инструкцию с сайта getcomposer.org.
Создание проекта:
composer create-project teapodsoft/slim-app-telegram myproject
cd myproject
Настройка проекта
Для корректной настройки приложения вам потребуется настроить файл secrets.json, который находится в директории secrets.
В случае, если после установки приложения у вас не создался файл secrets.json, то требуется использовать команду
cp secrets/secrets.example.json secrets/secrets.json
Структура secrets.json
{
"project": {
"NAME": "Basic Template Bot API",
"DOMAIN": "https://bots.my-domain.ltd"
},
"telegram": {
"TOKEN": "ТОКЕН от BotFather"
}
}
Работа с Telegram Bot Webhook
Установка webhook
В рамках использования подхода webhook требуется отправить запрос в Telegram Bot API с указанием ссылки, на которую будут отправляться запросы, когда пользователи пишут боту. Для этого, после разворота требуется открыть в браузере ссылку http://bots.my-domain.ltd/bot/hook/set
В ответ вы получите результат, что webhook установлен:
{
"result": true
}
Проверка текущего состояния
Для проверки установленного webhook можете воспользоваться ссылкой https://bots.my-domain.ltd/bot/hook/get
В ответ вы получите результат с информацией об установке:
{
"url": "https://bots.my-domain.ltd/webhook",
"has_custom_certificate": false,
"pending_update_count": 0,
"ip_address": "1.1.1.1",
"max_connections": 40
}
Удаление установленного webhook
В случае если вам требуется удалить привязку Telegram бота от webhook - воспользуйтесь ссылкой https://bots.my-domain.ltd/bot/hook/delete
В ответ вы получите результат
{
"result": true
}
Работа со Swagger
Приложение поддерживает Swagger. Вы можете получить список всех доступных для работы ссылок, обратившись по ссылке https://bots.my-domain.ltd/json-schema
Настройка своих команд для Telegram Bot
Для того, что бы настроить свои команды для работы потребуется
- Создать класс в директории /src/Telegram/Commands
- Наследовать ваш класс от абстрактного класса Command
- Добавить все необходимые функции для работы
Пример класса:
<?php namespace Teapodsoft\Telegram\Commands; final class TimeCommand extends CommandAbstract { protected static function getMessage(): string { return 'Current DateTime: '. date('Y-m-d H:i:s', time()); } }
После проделанных действий требуется включить команду в список доступных для бота. Для этого требуется в файле configs/config.php добавить в список ваш класс для работы.
<?php // Настройки Telegram Bot клиента для запуска консольных команд CommandInterface::class => [ 'start' => \Teapodsoft\Telegram\Commands\StartCommand::class, 'demo' => \Teapodsoft\Telegram\Commands\DemoCommand::class, 'time' => \Teapodsoft\Telegram\Commands\TimeCommand::class, 'date' => \Teapodsoft\Telegram\Commands\TimeCommand::class, ],