Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

PHP
Создание телеграм-бота и админки на Laravel11 и Filament.

В современном мире, где автоматизация и цифровые технологии играют ключевую роль в различных сферах, создание простых и эффективных административных панелей для ботов становится все более актуальной задачей. В этой статье мы рассмотрим процесс разработки такой панели для нашего бота.

Наш бот будет выполнять следующие функции:

  1. При первом запуске пользователем бот приветствует пользователя.
  2. При вызове команды /getText — отправит случайный текст. Сообщение сохранится в бд.

В административной панели мы добавим следующие элементы:

  1. Таблицу для создания, редактирования и удаления чатов с ботом.
  2. Таблицу с отправленными сообщениями.
  3. Виджет для просмотра статистики.
  4. Фильтр для поиска сообщений по чатам и дате создания.

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

  • PHP 8.2: Один из наиболее популярных языков серверной разработки.
  • MySQL: Для хранения данных нашего бота.
  • Laravel 11: Современная и мощная фреймворк для PHP, который значительно упрощает разработку.
  • Filament 3: Библиотека для создания панелей администратора.
  • Telegraph: Инструмент для работы с API Telegram.
  • Ngrok: Инструмент для создания виртуального внешнего адреса, для тестирования бота на локальной машине.

Теперь, можно приступать к созданию административной панели.

Установка проекта

Установка Laravel

Для запуска нашего проекта необходим  установить чистый проект laravel

composer create-project laravel/laravel telebot --prefer-dist
cd telebot

После успешной установки необходимо перейти в папку проекта и скачать библиотеку telegraph через composer

Установка Telegraph

Документацию по этой библиотеке можно найти по следующему адресу: Telegraph

composer require defstudio/telegraph
image.png

Активируем скачанный пакет и добавим миграции

php artisan vendor:publish --tag="telegraph-migrations"
php artisan migrate
image.png

Установка и настройка Filament 3

Установка Filament с использованием Composer.

composer require filament/filament:"^3.2" -W

Добавление необходимых функций и пакетов для работы с Filament.

php artisan filament:install --panels

Создание пользователя

php artisan make:filament-user

Теперь можно проверить как работает наш проект. Выполним команду

php artisan serve
image.png

Установка ngrok

Теперь наш сервер работает локально и для того, что бы зарегистрировать вебхук нужно создать внешний https адрес. Для этого есть специальная утилита — ngrok

Скачаем и установим клиент для windows в нашем личном кабинете

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Установка ngrok
choco install ngrok

Выполните следующую команду, чтобы добавить ваш authtoken в файл ngrok.yml по умолчанию.Скопировать код

ngrok config add-authtoken 2ODq3************************************

Разверните свое приложение онлайн

Подключите ваше приложение к сети в эфемерном домене, перенаправляя его на вышестоящую службу. Например, если оно прослушивает порт http://localhost:8080, запустите:Скопировать код

ngrok http http://localhost:8000

После запуска ваши конечные точки будут перечислены на странице конечных точек.

Если получилось, то выйдет такое сообщение

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Меняем в .env файле APP_URL на адрес выданный ngrok

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Настройка бота

Для начала создадим бота в telegram. Для этого добавим себе в контакты системного бота «BotFather«.

  • — Посылаем ему команду /newbot
  • — Далее посылаем «имя бота»
  • — После этого «BotFather» сообщаем token нового бота.
Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Далее создаем бота в Laravel командой artisan

php artisan telegraph:new-bot

запустится процесс создания

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Не забудь поменять в файле .env APP_URL

Находим пустой хандлер и меняем в нем настройки

vendor\defstudio\telegraph\src\Handlers\EmptyWebhookHandler.php

Меняем настройки безопасности в Конфиг файле config\telegraph.php

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Добавим следующий код для действия при нажатии команды /start

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

В нашем случае бот просто отправит пользователю «Hi my bot». Но мы доработаем этот функционал в дальнейшем.

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Создание модели и ресурсов

Необходимо добавить модель для сохранения отправленных сообщений

Выполните команду в терминале для создания модели и миграции:

php artisan make:model Message -m

После этого откройте созданный файл миграции в директории database/migrations и добавьте необходимые поля:

Откройте файл модели Message.php в директории app/Models и добавьте необходимые свойства:

После того как вы создали миграцию и модель, примените миграцию, чтобы создать таблицу в базе данных:

php artisan migrate

Так же мы создадим ресурсы для управлением сообщениями и чатами

php artisan make:filament-resource Message --simple --generate --view
php artisan make:filament-resource TelegraphChat --model-namespace=DefStudio\Telegraph\Models --simple --generate --view

Создание команды для отправки случайного сообщения

Пример отправки тестового сообщения

Отправим нашему боту тестовое сообщение и проверим результат

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Настройка фильтров и виджетов в ресурсе сообщений

После отправки сообщения боту появится первое сообщение. Исправим немного ресурс для отображения:

форма редактирования

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Таблица

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Фильтр

В нашем примере можно будет искать сообщения по дате создания От — До и можно выбрать несколько чатов в фильтре.

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Виджет

Filament поставляется с шаблоном виджета «обзор статистики», который вы можете использовать для отображения нескольких различных статистических данных в одном виджете без необходимости создания пользовательского представления.

Начните с создания виджета с помощью команды:

php artisan make:filament-widget StatsOverview --stats-overview

Эта команда создаст новый StatsOverview.php файл. Откройте его и верните экземпляры Stat из метода getStats()

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

В созданном виджете создадим несколько информационных блоков

Например для получения количества всех Сообщений можно использовать объект Stat

 Stat::make('Messages', Message::query()->count()),

Добавим информацию о чатах

Stat::make('Chats', TelegraphChat::query()->count()),

И количество сообщений за сегодня

Stat::make('Current datye message',  Message::query()->whereDate('created_at', '>=', Carbon::now())
                                                                ->whereDate('created_at', '<=', Carbon::now())
                                ->count()),
Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Добавим в файл app\Filament\Resources\MessageResource\Pages\ManageMessages.php следующую функцию и зарегистрируем ранее созданные виджет

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

В результате у нас получится следующий виджет

Как создать админку для своего телеграмм бота (Laravel, Filament3, Telegraph)

Заключение


Таким образом, разработка административной панели для Телеграм-бота представляет собой важный шаг к упрощению управления ботом и повышению эффективности его работы. Внедрение различных инструментов и функций позволяет администраторам эффективно контролировать работу бота, собирать статистику, отслеживать активность пользователей и оперативно реагировать на их запросы. Благодаря использованию стандартных библиотек и фреймворков, процесс разработки становится более структурированным и предсказуемым, что облегчает внедрение новых функциональностей и обновление существующих.

Добавить комментарий