Skip to main content
Создание бота для telegram на php

Пишем бота для Telegram на PHP

Всем привет. Поскольку в опроснике большинство проголосовало за написание статей по созданию ботов, дальнейшем я буду писать больше на эту тему. А начнем мы с самого простого бота с использованием PHP и Botman Studio.

Botman Studio — это специальный фреймворк для разработки ботов на основе laravel (можно использовать и без отдельным пакетом). Включает в себя драйверы для различных мессенджеров таких как Facebook Messenger, Slack, Telegram, WeChat и другие.
А создадим мы бота который будет отвечать на сообщения пользователей. Ничего сложного.

Регистрация бота

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

  1. Откроем телеграм и в поиске пишем @BotFather
  2. Пишем в чат /newbot
  3. Вводим имя пользователя бота
  4. Вводим отображаемое имя вашего бота (должно заканчиваться на Bot или _bot)

После этого у вы получите токен бота, через него мы и будем взаимодействовать с api.
Открываем файл .env и пишем туда строчку:

TELEGRAM_TOKEN=YOUR-TELEGRAM-TOKEN-HERE

YOUR-TELEGRAM-TOKEN-HERE заменяем на токен

Создание проекта

Для начала работы у вас должен быть установлен composer(ссылка на инструкцию). Если композер установлен, можно приступать к созданию бота.
Открываем консоль и переходим в нужную директорию, вводим команду composer create-project --prefer-dist botman/studio project_name где project_name — название вашего проекта(и директории которая будет создана).

Подключение к API

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

php artisan botman:install-driver telegram

Для работы вебхука нужен обязательно доступ по https, для этого вам понадобится либо собственный домен с https либо можно воспользоваться https://ngrok.com/.

Установка Web хука

Чтобы получать сообщения от пользователей нам нужно установить вебхук. Регистрация вебхука выполняется пост запросом на адрес https://api.telegram.org/bot/setWebhook, нужно передать всего один параметр url со значением https://mylocal.app/botman(урл заменить на свой но обязательно оставить botman).

Для регистрации вебхука в Botman вам не нужно вручную ничего отправлять, просто запустим команду — php artisan botman:telegram:register и укажем адрес вашего вебхука. Для создания https без собственного домена и бесплатно я использую ngrok, делается это всего за несколько команд

Если вы только скачали себе приложение, вам нужно добавить ваш токен авторизации, как это сделать описано в личном кабинете в разделе Auth
После этого запускаем сервер:

ngrok http 80 --host-header=bot.local

bot.local указано потому что у меня настроен виртуал хост на моего бота в апаче и в файле hosts есть запись

Копируем адрес https который получили и выполняем команду php artisan botman:telegram:register, вас попросят указать адрес вебхука, вставляем и дописываем /botman

Готово.

Теперь у вас есть полноценный бот в телеграме, он умеет слушать сообщения и если увидит сообщение Hi ответит вам Hello!. Попробуйте сами, найдите вашего бота в телеграмм и напишите ему слово Hi

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *