THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

А также, почему они умирают спустя некоторое время и о том, что нужно для создания самого простого телеграм-бота. Обо всем по порядку в нашей статье.

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

Из чего состоит этот чудесный робот

И что нужно для его создания? Собственный Телеграм-бот – это не просто регистрация в специальном чате @BotFather . И не привычное создание нового канала или чата. Это целая цепочка настроек и механизмов, взаимодействующих между собой.

Для настройки собственного бота вам понадобится (простыми словами):

  1. Домен первого уровня для сайта (в среднем стоит от 100 до 600 рублей в год)
    Первый уровень – это сайт.
    Домен второго уровня не подойдет, либо для него все равно понадобится отдельный сертификат SSL (второй уровень — это level2..
  2. Сертификат SSL – пакет услуг, который устанавливает проверенное соединение с сайтом (в браузере мы видим https вместо http и знак щита, либо замочка). Позволяет подтвердить, что сайтом владеет настоящий человек или компания, отвечающий всем нормам и требованиям сети.
    Бывают бесплатные сертификаты, но нередко Telegram-боты дают на них сбои, да и установка их своими силами ну очень сложная для обычного пользователя сети.
    Платный стоит от 1900 рублей в год.
  3. Хостинг – место, где хранятся данные, а также запускаются команды (скрипты), отправляемые ботом. Средняя цена надежного хостинга, поддерживающего скрипты и базу данных – 300 рублей в месяц.

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

Итоговая минимальная стоимость телеграм-бота составляет:
300 + 1900 + 3600 = 5800 рублей в год

Без учета цены на его изготовление, которая может быть как 1000 рублей, так и все 100,000. В зависимости от сложности реализации.

На что стоит обратить внимание

Если фирма или частное лицо занимается разработкой телеграм-ботов, то они все равно платят эти 6000 рублей в год за технические услуги. И могут создать на них хоть 1000 ботов. Зависит от их загруженности. Поэтому цену на «железо» они вполне возможно не учитывают в вашем заказе.

Становится понятно, почему умирают многие хорошие боты. Кто-то что-то написал, и не один раз, а потом просто понял, что проекты не взлетели, и перестал платить за хостинг, а вместе с ним и за вашего бота, проданного ранее.

Как себя обезопасить от подобной ситуации?
1. Заключать договор, возможно, с абонентской платой
2. Платить за аренду хостинга и домен с сертификатом самому

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

+ Еще важный момент

«Я хочу, чтобы бот скидывал комментарии из Инстаграм, а еще проверял Директ»
Отлично! Мы вам сделаем все это! – отвечает фрилансер.

Но не всегда говорит о том, что для считывания данных из инстаграма нужны еще и технические аккаунты соцсети, для обслуживания которых потребуется актуальная библиотека, и еще прокси. А если действия сложные, то и вовсе дорогие мобильные прокси. Что добавит вам порядка 500 рублей в месяц абонентской платы.

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

Планируя заведение для своих целей телеграм-бота, всегда надо понимать, что это влечет за собой ежемесячное обслуживание. А если он будет взаимодействовать со сторонними сервисами – еще их содержание и поддержка.

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

Мы собрали два с половиной десятка самых интересных ботов для Telegram.. А другие обнаружили совсем недавно. Разбирайте.

1. Fast AID - ассистент для Telegram, предназначенный для предоставления первой помощи. Спас не одну жизнь.

2. GrammarNaziBot - проверяющий орфографию бот. Его можно добавить в общий чат, чтобы за неправильное правописание было стыдно всем.

3. Controller Bot - бот, предназначенный для администраторов каналов в Telegram, поддерживающий отсроченные публикации и не только.

4. Telegram Store Bot - а вот с помощью этого умного бота получится искать других ботов. Очень удобный ассистент, который помог создать эту подборку.

5. Arena Game - неординарный игровой бот, с помощью которого получится отвлечься на несколько минут на неординарный геймплей.

6. КриптоБот - бот, который следит ща стоимостью Bitcoin и Ethereum, а также показывает график изменения цены первого.

7. Weatherman - этот бот присылает погоду в избранных городах по графику. Окажется полезным переменчивой осенью.

8. TempMail - бот для Telegram, с помощью которого можно за секунды создать временный почтовый ящик для регистрации на сомнительных сервисах.

9. Киноман - а вот этот бот подскажет, какой фильм или сериал посмотреть сегодня вечером. Он следит за новинками не только на официальных ресурсах.

10. Yandex.Translate - бот для перевода с русского на английский, с английского на русский и наоборот . Один из самых полезных в подборке.

11. Ударения - бот расскажет об ударениях в самых хитроумных русских словах. Станет отличным подспорьем в нелепых спорах с друзьями.

12. InstaSave - интересный бот для Telegram, с помощью которого можно загрузить фотографии и даже истории из Instagram.

13. Pomodoro - неординарный бот-таймер для самой продуктивной работы. Он поможет 25 минут работать и 5 минут отдыхать.

14. MyCookBot - уникальный бот, который может подсказать какой-нибудь интересный рецепт на основании списка продуктов, завалявшихся в вашем холодильнике.

15. Vinci - бот-компаньон для одноименного мобильного приложения, которое предназначено для обработки фотографий нейронными сетями.

16. DeLorean - настоящая машина времени, которая поможет отправлять вам самому себе сообщения в будущее. Удобно вместо напоминаний.

17. To PDF - бот, предназначенный для конвертирования DOC, DOCX, ODT, TXT, JPG и других типов файлов в PDF.

18. Dr.Web - фирменный бот популярного антивирусного программного обеспечения, предназначенный для проверки файлов до 10 мб на вирусы.

19. Programming - бот, который заточен не только для профессиональных, но и для начинающих программистов.

20. SoundCloud - умный помощник для поиска и скачивания треков из популярного сервиса прямо через мессенджер.

21. EasyStrongPasswordBot - мобильный ассистент, заточенный под создание сложных паролей, который невозможно взломать.

22. Wolfram Alpha - ассистент, который будет решать математические задачки и рассказывать о научных принципах через Telegram.

23. PollBot - простой бот, предназначенный для создания вопросников в групповых чатах. Очень удобный.

24. Translator - максимально быстрый перевод между русским и английским языком. Очень простой и удобный.

25. Instagram Girls - бот для тех, кому грустно или скучно. Он показывает фотографии красивых девочек из Instagram.

В прошлый раз мы разбирали более простой способ создания бота для телеграмм, который не требовал знаний программирования т.к. использовал сторонний сервис и визуальный конструктор. Сегодня предлагаю поднять планку и поговорить о том, как написать бота для Телеграм на php (это язык программирования). Если вы не программист, то материал ниже будет вам непонятен, поэтому советую прочитать другую статью. Итак, начнем.

Подготовка к написанию бота

Обращаться к API Телеграма будем при помощи TelegramBotApi . Соответственно, чтобы клонировать проект с Гитхаба нам понадобиться Composer. Composer как правило не устанавливается без файла php.exe. Самый просто способ это исправить – установить Open Server.

Клонирование проекта с Гитхаба

Открываем командную строку, при помощи команды cd заходим в папку в которую будем устанавливать код и выполняем последовательно следующие команды:

Php -r "copy("https://getcomposer.org/installer", "composer-setup.php");"
php composer-setup.php
php -r "unlink("composer-setup.php");"

Php composer.phar require telegram-bot/api

Заходим в папку и убеждаемся, что все файлы успешно установлены.


Теперь данные файлы помещаем на наш хостинг в папку, в которой будет располагаться наш бот. На этом подготовка завершена – приступим к кодингу.

Кодинг Telegram бота на php

В папке с ботом создадим файл index.php в котором мы и будем писать код нашего бота. Важно! Кодировка файла - utf-8 без bom!

header("Content-Type: text/html; charset=utf-8");
// подключаемся к API
require_once("vendor/autoload.php");
// создаем переменную бота
$token = "токен, который выдал BotFather";
$bot = new \TelegramBot\Api\Client($token);

После того как мы создали переменную бота $bot, мы можем обращаться к api, но прежде нам необходимо зарегистрировать webhook.

Что такое webhook?

WebHook – это механизм по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду, ее надо каким-то образом передавать на сервер и получать ответ. Webhook как раз для этого и нужен. Он сообщает телеграму куда передавать команды. Поскольку Телеграм НЕ ЗНАЕТ, где именно расположен код нашего бота, то нам нужно это исправить.

Для этой цели у нас существует команда: $bot->setWebhook

// если бот еще не зарегистрирован - регистрируем
if(!file_exists("registered.trigger")){
/**
* файл registered.trigger будет создаваться после регистрации бота.
* если этого файла нет существует, значит бот не
* зарегистрирован в Телеграмм
*/
// URl текущей страницы
$page_url = "https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$result = $bot->setWebhook($page_url);
if($result){
file_put_contents("registered.trigger",time()); // создаем файл дабы остановить повторные регистрации
}
}

Прежде чем продолжить писать код – сохраним индексный файл и запустим его в том виде, в котором он есть сейчас. После запуска в папке с ботом должен появиться еще один файл – registered.trigger. Если файла появился – значит все сделали правильно и Телеграмм знает, где лежит наш бот.

Обязательные команды для ботов

Теперь необходимо научить нашего бота реагировать на обязательные для всех ботов команды /start и /help.

// обязательное. Запуск бота
$bot->
$answer = "Добро пожаловать!";
$bot->sendMessage($message->getChat()->getId(), $answer);
});
// помощь
$bot->command("help", function ($message) use ($bot) {
$answer = "Команды:
/help - помощь";
$bot->sendMessage($message->getChat()->getId(), $answer);
});
// запускаем обработку
$bot->run();

Снова сохраняем индексный файл и попробуем потестировать нашего бота! Ура, все пашет! Дальнейший кодинг зависит от поставленной Вами задачи, а потому самое время поговорить о том, как устроена наша API библиотека

Принцип работы библиотеки TelegramBotApi

Команды задаются блоком:

$bot->command("start", function ($message) use ($bot) {
});

Все команды должны быть до вызова $bot->run(); , а иначе не будет работать. Т.е. $bot->run(); должен замыкать наш код.

Отправка сообщения в TelegramBot API

Отправка сообщения выполняется командой:

$bot->sendMessage(id пользователя которому отправляем, текст сообщения);

Отправка картинок в TelegramBot API

Отправка картинок осуществляется через передачу Телеграмму ссылки на эту картинку. Мессенджер самостоятельно скачивает изображение и отдает пользователю! Для примера отправим юзеру картинку если он введет команду /getpic.
// передаем картинку
$bot->command("getpic", function ($message) use ($bot) {
$pic = "http://binetmed15.beget.tech/wp-content/uploads/forbot.jpg";
$bot->sendPhoto($message->getChat()->getId(), $pic);
});

Отправка документов и голосовых сообщений

Документы, в отличие от картинок необходимо оправлять ввиде POST. К счастью, библиотека TelegramBotApi сделает все что нужно без нашего с вами участия. Сначала загрузим документ в папку с нашим ботом (см картинку ниже)

Для отправки документа используем следующий код:

// передаем документ
$bot->command("getdoc", function ($message) use ($bot) {
$document = new \CURLFile("sendfrombot.txt");
$bot->sendDocument($message->getChat()->getId(), $document);
});

Обратите внимание, что строчка

$document = new \CURLFile("sendfrombot.txt");

предполагает размещение txt-файла sendfrombot в в корневой папке бота. Однако, можно передавать в переменную и обычный урл. С передачей голосовых сообщения (войсов) ситуация аналогична:

// передаем войс
$bot->command("getvoice", function ($message) use ($bot) {
$voice = "http://binetmed15.beget.tech/wp-content/uploads/glazunov_maxim-prividenie.mp3";
$bot->sendVoice(
$message->getChat()->getId(),
$voice //,
//$duration,
//$replyToMessageId,
//$replyMarkup,
//$disableNotification
);
});

Получение сообщений из чата

Для получения данных из чата в API имеется команда .on() . С ее помощью мы можем прикрутить к нашему телеграм-боту, нейросеть для анализа сообщений или соорудитеь простенькую болталку по алгоритму Маркова, для отправки случайных сообщений в ответ на месенджы пользователя. Выглядеть это может примерно так:

// болталка
$bot->on(function($Update) use ($bot){
$message = $Update->getMessage();
$mtext = $message->getText();
$cid = $message->getChat()->getId();
if(mb_stripos($mtext,"привет бот") !== false){
$bot->sendMessage($message->getChat()->getId(), "и тебе здорова, чувак!");
}
}, function($message) use ($name){
return true; // когда тут true - команда проходит
});

Сообщаем Botfather-у список наших команд

После того как команды прописаны необходимо сообщить Botfather’у об их наличии (строго говоря это не является обязательным, но желательно все же добавить). Открываем чат с Botfather и вбиваем /setcommands (в случае опечатки используем команду /setcommands для переопределения).

Теперь потестим нашего телеграм-бота.

Как видим, все ок! Теперь вы знаете как создать своего бота на php для телеграмма . Успехов в разработке! В следующий раз мы продолжим дорабатывать нашего бота и разберем как добавить кнопки, а пока рекомендую скачать исходники текущего урока.

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама