• Сколько реально стоят Telegram боты? Из чего состоит этот чудесный робот

    В прошлый раз мы разбирали более простой способ создания бота для телеграмм, который не требовал знаний программирования т.к. использовал сторонний сервис и визуальный конструктор. Сегодня предлагаю поднять планку и поговорить о том, как написать бота для Телеграм на 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 для телеграмма . Успехов в разработке! В следующий раз мы продолжим дорабатывать нашего бота и разберем как добавить кнопки, а пока рекомендую скачать исходники текущего урока.

    Мы собрали два с половиной десятка самых интересных ботов для 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.

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

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

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

    И что нужно для его создания? Собственный Телеграм-бот – это не просто регистрация в специальном чате @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 рублей?

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

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