Веду телеграм канал про PHP "Миддл не приговор" @middle_not_final Работаю Backend разработчиком в найме
carbon
Discover the magic of the internet at Imgur, a community powered entertainment destination. Lift your spirits with funny jokes, trending memes, entertaining gifs, inspiring stories, viral videos, and so much more from users.

С сентября работаю над пакетом для Laravel для быстрой разработки телеграм ботов.
Идея была изначально натянуть сову на глобус реализовать асинхронный пакет на базе ReactPHP для Laravel, уж очень мне он понравился. Даже начал раскапывать уже не поддерживаемый пакет. Но благо, вовремя меня посетила другая мысль, что можно воткнуть небольшой go прокси на телегроам вебхук, этот прокси будет диспатчить задачи напрямую в редис, а воркеры уже обработают задачу не тратя время на бутсрап, как если это был бы стандартный подход при обработке HTTP запросе.
Я переделал то, что уже успел написать, проверил что идея рабочая, оказалось что да, так и появился этот модуль Пришлось раскопать еще, как внутри сериализуется Job. Для поддержки Horizon, как под капотом проиcходит работа с Redis, какие события нужно вызывать чтобы Job была учтена в статистике.
Последний штрих, это автоматическая установка бинарника.
Достаточно вызвать ./vendor/bin/tgook, и бинарник автоматически запуститься и будет слушать входящие запросы на 6945 порту.
Zanzara стала первым донором идей для моего пакета, оттуда я взял:
На эти фичи ушло много времени, но сейчас они уже стабильно работают. Роутинг конечно пока покрыл только часть действий доступных для телеграм, но как временное решение есть роут onAny в который будет прокинут Update. Я уже совсем скоро продолжу добавлять новые роуты и в идеале на все все возможные обновления от телеграм свои роуты с удобной фильтрацией
Ядром пакета (типы данных, обработка Update, работа с API) является стороння библиотка Пока считаю, что это нормальная история. Реализовывать еще и апишку было бы слишком накладно по моим ресурсам и пакет так и не добрался бы до релиза.
Сейчас я финалю тестирование и осваиваю управление опесор проектом. Совсем скоро планирую продолжить добавлять новые роуты. Всех приглашаю на тестирование пакета.
Установка и настройка выглядит очень просто:
composer require hybridgram/tgbot-laravel
Далее нужно опуликовать конфиг, тестовые роуты
php artisan vendor:publish --provider="HybridGram\Providers\TelegramServiceProvider"
И установить переменную BOT_TOKEN в вашем .env еще рекомендую натсроить BOT_ID для безопасности (любое уникальное значение).
Настраиваем первые роуты
<?php
use HybridGram\Facades\TelegramRouter;
use HybridGram\Core\Routing\RouteData\TextMessageData;
use HybridGram\Core\Routing\RouteData\PollData;
use HybridGram\Telegram\Poll\PollType;
use HybridGram\Telegram\TelegramBotApi;
TelegramRouter::group(['for_bot' => 'main'], function (\HybridGram\Core\Routing\TelegramRouteBuilder $builder) {
$builder->onTextMessage(function (TextMessageData $message) {
$api = app(TelegramBotApi::class);
$api->sendMessage($message->getChatId(), "Echo: {$message->text}");
});
// you can use any of route
// $builder->onPoll(function (PollData $poll) {
// $api = app(TelegramBotApi::class);
// $api->sendMessage(
// $poll->getChatId(),
// "Poll received ({$poll->poll->type}) with " . count($poll->poll->options) . " options"
// );
// }, pollType: PollType::REGULAR);
});
И запускаем polling
php artisan hybridgram:polling --hot-reload
Это все) Больше подробностей в документации https://hybridgram.space/ru/getting-started/introduction/
Веду телеграм канал про PHP "Миддл не приговор" @middle_not_final Работаю Backend разработчиком в найме
Я работаю в PhpStorm, и часто возникает необходимость где-то временно сохранить текст или сниппет, чтобы потом к нему вернуться или найти нужную информацию. Хочется сделать это быстро и без лишних размышлений, чтобы случайно этот файл не попал в Git. И вот только пару месяцев назад я нашёл удобный способ это делать, не открывая никакие заметки или второй редактор.
Существует сочетание клавиш Cmd + Shift + N для Mac и Alt + Ctrl + Shift + Insert для Windows Linux, которое вызывает окно для создания временного файла:

В этом окне можно выбрать любой формат или просто обычный Plain Text. Мне удобно создавать файлы в форматах PHP, JSON, а также простые тестовые файлы. Работа с такими файлами происходит так же, как с любыми другими: их можно искать через глобальный поиск Cmd + Shift + O или находить в списке последних редактируемых файлов Cmd + E.
Найти все свои старые временные файлы можно в разделе Scratches and Consoles:

Как мне кажется, это очень удобно. В моём окружении никто этим не пользуется, поэтому я решил поделиться этим небольшим лайфхаком.
Кстати, там же сохраняются консоли, если вы делаете запросы в базу данных прямо из PhpStorm.
Если понравилась заметка, подписывайтесь на мой телеграм канал, там я пишу про разработку, PHP и просто про жизнь. @middle_not_final
{message}