Skip to content

Реализация телеграм ботом с различным функционалом

License

Notifications You must be signed in to change notification settings

yaleksandr89/telegram-bots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram Bots

UPD

  • [12.07.2023] - Удален бот, который использовал бесконечный цикл

Установка

Используемый стек:
* PHP ^8.0
* Composer ^2.0
  1. Зарегистрировать бота в телеграмме и получить токен.
  2. Переименовать config.php.example в config.php и заполнить константу токен (см. комментарии в файле)
  3. Установить composer пакеты: composer i
  4. После размещения бота на хостинге необходимо его привязать (setWebhook).
    • Пример: если бот доступен по url https://example.com/bot, привязать его можно выполнив запрос: https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url=https://example.com/bot (наличие ssl - обязательно).
    • Проверить статус бота можно, выполнив запрос: https://api.telegram.org/bot{BOT_TOKEN}/getWebhook

Реализованные боты

simple-bot

Реализован "эхо" функционал, то есть отвечает вам сообщением, который вы написали. Также реализован функционал отправки случайного изображения - если боту написать photo/ Пришлет случайное изображение из директории simple-bot/img (файлы можно заменить своими).

Пример работающего SimpleForStudyBot бота

tba-php-sdk

В данном боте помимо эхо функционала реализованно:

Команды:

  • /photo - отправляется случайное изображение из директории remote/tba-php-sdk/img (файлы можно заменить своими).
  • /document - отправляется случайное документ из директории remote/tba-php-sdk/docs (файлы можно заменить своими).
  • /video - отправляется случайное видео из директории remote/tba-php-sdk/videos (файлы можно заменить своими).
  • /sticker - Отправляет случайный стикер из массива $arrIdStickers (массив находится в remote/tba-php-sdk/Utils/TelegramBotApiHelper, можно добавить или заменить своими).
  • /start - Вызывает простую клавиатуру в которой можно отправить контакт (работает на ПК и на смартфоне), отправить свою локацию (работает только на смартфоне). Реализован функционал перехода на другую клавиатуру и возврата к первой, а также возможность убрать клавиатуру (именно убрать, а не скрыть в значок).
  • /help - вызывает встроенную клавиатуру, в которой реализовано переход по двум ссылкам. Также реализована "Функциональная кнопка" (в конкретном боте после её клика отрабатывает функция, которая изменяет текст и добавляет время клика).

Остальной функционал:

  • При отправке любого стикера боту - вы получите его ID.
  • При отправке location:longitude,latitude - бот ответит ссылкой на гугл карту (пример: location:55.753220, 37.622513).

Пример работающего TbaPhpSdkBot бота

@ya_translation-bot-v1

Бот переводчик (v1), перевод фраз осуществляется с помощью dejurin/php-google-translate-for-free. Доступные переводы:

  • С Английского на Русский
  • С Русского на английский

Есть возможность переводить как слова, так и словосочетания и предложения. Реализована обработка ошибок, если в бот отправить фото, видео, стикер или какой-то документ, пользователю вернется сообщение, что бот работает только с текстом.

Часть данных храниться в БД (запрос на создание нужной таблицы находится в поддиректории: FAQ).

Пример работающего "[YA] Бот переводчик v1"

@ya_weather_v1_bot

Бот переводчик v2. Отличие от Бота переводчика v1 заключается в:

  • Определение на каком языке отправлен текст происходит автоматически.
  • Так как данные для переключения языка больше не нужны - БД в боте не используется.

Пример работающего "[YA] Бот переводчик v2"

@ya_weather_v1_bot

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

  1. Отправить геолокацию (доступно только с мобильных устройств).
  2. Указать название города в форте: Город или Город, код страны (Пример: Москва или Москва,ru)
Скриншот: "Пример получения погоды с указанием 'названия' города или 'указанием города, код страны'"

weather-bots-use-name-city.png

Скриншот: "Пример получения погоды при отправке геолокации (доступно только с мобильных устройств)"

weather-bots-use-location.png

Пример работающего "[YA] Бот синоптик"

@ya_accountant_bot

Реализация бота бухгалтера. Помогает следить за финансами и домашней бухгалтерией. Реализован функционал:

  • Добавления Доходов / Расходов. Эти категории привязываются к определенной группе, а сами данные хранятся в БД. Структура
  • Формирование отчетов:
    • Доходы / Расходы за день.
    • Доходы / Расходы за месяц.
    • Итого за текущий день / месяц - разница между доходом и расходом

Есть возможность вывести текущие категории, которые закреплены за доходами и расходами. Также реализована проверка, когда при попытке добавить доход или расход указывается не корректный формат. Реализовано ограничение доступа к боту по ID телеграмма (TELEGRAM_USER_ID).

Скриншот: "Общий интерфейс управления"

ya_accountant-1.png

Скриншот: "Вывод категорий закрепленных за Доходами/Расходами"

ya_accountant-2.png

Скриншот: "Вывод информации за текущий день: 'Доходы', 'Расходы', 'Итого'"

ya_accountant-3.png

Скриншот: "Процесс добавления дохода (корректный и не корректный формат)"

ya_accountant-4.png

Скриншот: "Попытка обратиться к боту, если ID телеграмма не совпадает с ID указанным в TELEGRAM_USER_ID"

ya_accountant-5.png

"[YA] Бот бухгалтер". Так как доступ настроен на мой ID телеграмма - вы увидите ошибку доступа.


Для отладки в ботах реализован функционал записи в логи

  • Возникающие исключения отлавливаются в try/catch и пишутся в файл try_catch_logs.txt, который находится в папке с ботом.
  • Для записи ответов с телеграмм бота и запросов с вашей стороны реализован методы addToLogs() / writeToLogs().