Skip to content

Парсинг Telegram Bot API и генерация PHP файлов типов и методов.

License

Notifications You must be signed in to change notification settings

appto-dev/telegram-api-parser

Repository files navigation

Парсер документации Telegram

License: MIT

Мне с периодичностью требуется создать бота в Telegram для моих клиентов. Я понимаю, что есть достаточно библиотек, для их создания, но я всегда испытывал некоторые проблемы используя их.

  • Мне хотелось иметь минимальный набор функций, а именно описание Telegram типов и методов. Чтобы моя IDE (PHPStorm) могла мне подсказывать какие параметры нужно заполнить, для того или иного метода Telegram.
  • Все библиотеки которые я использовал до этого, не могли обновляться часто, новые функции из API приходили слишком поздно.
  • Некоторые библиотеки содержат кучу не нужного мне функционала или логики.

В ручную отслеживать, что изменилось с момента последнего обновления Telegram Bot API, сложно, или невозможно. Изучив HTML-разметку документации, мне пришла идея создать парсер, который решит проблему поиска изменений в API. Благодаря которой, я теперь могу получать документированную последнюю версию Bot API, буквально за несколько команд в консоли.

🎁 Пример работы генератора: mahlenko/telegram-bot-cast-laravel - вы можете использовать его в своем проекте.

🚀 GitHub Action

Добавлен workflow, который раз в день получает последнюю версию Telegram Bot API. Если версия обновилась, сгенерирует новые файлы для репозитория mahlenko/telegram-bot-cast-laravel теперь там всегда "свежая" сборка.

Установка и использование

Просто склонируйте репозиторий себе, и запустите несколько команд:

  • php console telegram:parse - для парсинга актуальной документации в JSON файл.
  • php console telegram:generate - для генерации PHP файлов.

✅ Готово! Заберите сгенерированные файлы из директории build себе в проект.

Расширение сгенерированных классов

Для простой работы с классами, может понадобится их расширить собственным классом. Например, для работы в Laravel, я использую библиотеку Spatie Laravel Data, по сути библиотека делает удобной работу с DTO. Также библиотека дает подсказки IDE по ключам, при создании класса.

\Method\SendMessage::from([
    'chat_id' => 0000000,
    'text' => 'Your message'
])

Для генерации расширенных классов используйте аргумент --extends:

php console telegram:generate --extends=\\Spatie\\LaravelData\\Data

После чего, сгенерированные классы получат ваше расширение и все возможности нового класса:

final class SendMessage extends \Spatie\LaravelData\Data {
    // ...
}

Важно! Ваш класс должен реализовывать метод toArray().

Зависимости

✨ Благодарности

TonBlockchainLogo TonBlockchainLogo

Вы всегда можете отправить благодарность на чашку кофе или больше 😉 с помощью TON на мой кошелек appto-wallet.ton

About

Парсинг Telegram Bot API и генерация PHP файлов типов и методов.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages