- Телеграм-бот на сервере: загрузка, настройка и запуск
- Шаг 1. Выбрать хостинг
- Шаг 2. Заказать хостинг
- Шаг 3. Загрузить бота
- Шаг 4. Зайти на сервер по SSH
- Шаг 5. Установить Node.js
- Возможные ошибки при установке, и как их решить
- Шаг 6. Запустить и проверить бота
- Шаг 7. Обеспечить автоматический перезапуск бота
- 15 полезных ботов для Telegram на все случаи жизни
Телеграм-бот на сервере: загрузка, настройка и запуск
Автор статьи — Денис, специалист службы технической поддержки хостинга в ООО «REG.RU».
В предыдущей статье мы рассказали, как создать простого бота на Node.js, однако он работал только на локальном компьютере. Эта статья о том, как загрузить бота на сервер, запустить его и проверить, что всё работает.
Шаг 1. Выбрать хостинг
Как правило, на shared-хостинге отсутствует поддержка Node.js, поэтому нам понадобится как минимум виртуальный сервер. Существуют сервисы, предлагающие VPS бесплатно, но с заметными ограничениями: например на количество трафика или нагрузку на сервер. Можно выделить несколько известных зарубежных провайдеров (но стоит отметить, что для новичков они могут оказаться сложными):
- Google Cloud
- Oracle Cloud
- Amazon Web Services
Преимущество платных VPS в более высоких лимитах или их отсутствии, а также в гарантии стабильной работы сервера. Вместе с этим вы получаете активную поддержку и всегда можете рассчитывать на помощь хостинг-провайдера, если возникнут проблемы.
Для примера мы закажем облачный VPS в REG.RU, вы можете воспользоваться любым VPS-хостингом. Он удобен для тестового проекта тем, что оплата почасовая. При выборе тарифа мы рекомендуем ориентироваться на несколько параметров:
- Прогнозируемая нагрузка — зависит от сложности вашего бота и количества запросов к нему.
- Количество оперативной памяти — это зависит от многих факторов, как, например, уровень оптимизации кода и общий масштаб вашего проекта.
Так как наш бот использует только одну основную библиотеку и состоит из нескольких строк кода, мы выбираем самый младший тариф — Cloud-0. В будущем, если возникнет необходимость, можно перейти на более дорогой тариф.
Шаг 2. Заказать хостинг
Переходим по ссылке: https://www.reg.ru/vps/cloud/, выбираем тариф, операционную систему и шаблон «Чистая ОС». Если у вас нет особых предпочтений, рекомендуем выбрать Ubuntu 18.04. Хотя у REG.RU есть шаблон c Node.js, для чистоты эксперимента всё необходимое ПО мы установим сами. Нажимаем кнопку «Заказать»:
После заказа и оплаты дождёмся настройки сервера:
В течение минуты статус сервера сменится с «В процессе» на «Активен». После этого отобразятся реквизиты доступа к серверу, они также будут отправлены на почту:
Шаг 3. Загрузить бота
Приступим к загрузке бота на сервер. Это можно сделать разными способами — с помощью FTP, SFTP, панели управления или, к примеру, rsync. Мы выберем самый быстрый вариант — SFTP, так как для него нужна только возможность подключения к серверу по SSH, которая обычно присутствует на всех VPS сразу после заказа.
Мы подключимся к серверу с помощью FileZilla. Укажем IP-адрес сервера, а также логин root и пароль в настройках клиента:
При первом подключении появится окно с предупреждением:
Ставим галочку «Всегда доверять этому хосту» и нажимаем «Ок».
Переходим на директорию выше ( . ), затем в каталог /opt и создаём папку с произвольным названием (мы выбрали keksbot ):
Переходим в созданную папку и загружаем файлы index.js и package.json :
Шаг 4. Зайти на сервер по SSH
Теперь нужно подключиться к серверу по SSH, чтобы установить Node.js и запустить бота. Для этого необходим SSH-клиент, например Putty, XShell, Bitvise SSH или любой другой. Функциональность программ может немного отличаться, но большой разницы в использовании между ними нет. Мы выбрали PuTTY как самый популярный и бесплатный SSH-клиент для Windows.
Открываем PuTTY, указываем IP-адрес сервера, порт 22 уже указан по умолчанию:
Нажимаем «Соединиться». Откроется окно с запросом логина:
Вводим root , после чего появится запрос пароля, при вводе которого символы не отображаются. Не стоит переживать, это особенность работы Linux — пароль нужно вводить вслепую. Чтобы не делать этого вручную, можно скопировать пароль и нажать правой кнопкой мыши в окне PuTTY. Убедитесь, что вы скопировали пароль без пробелов!
Шаг 5. Установить Node.js
Теперь займёмся установкой. Обратите внимание, что команды для установки Node.js отличаются в зависимости от операционной системы. В наших примерах указаны команды для Ubuntu, Debian и CentOS — мы будем вводить их в консоли SSH-клиента.
Если вы не знаете, какая ОС установлена на сервере, можете проверить это командой:
Вывод будет примерно таким:
Нас интересует поле NAME , в котором указано название дистрибутива.
Помимо Node.js нам понадобится утилита Screen, чтобы бот продолжал работать, когда мы отключимся от сервера. Также нужен менеджер пакетов npm для установки зависимостей.
Подождём завершения установки и проверим, что Node.js работает:
Если в ответе отобразилась версия установленного пакета, то всё прошло успешно.
Теперь перейдём в папку с файлом бота и установим зависимости:
Возможные ошибки при установке, и как их решить
При установке могут появиться ошибки вида:
Обычно это связано с тем, что у пользователя недостаточно прав для установки пакетов на сервере, либо предыдущий процесс установки завершён некорректно.
В первом случае необходимо убедиться, что вы подключились к серверу под именем суперпользователя root — при необходимости зайдите на сервер заново.
Во втором случае для решения проблемы нужно завершить процесс менеджера пакетов и удалить lock -файлы. Чтобы это сделать, запустите команды:
После этого попробуйте заново запустить установку.
Шаг 6. Запустить и проверить бота
Пришло время запустить бота. Для начала запустим утилиту Screen простой командой:
Перейдём в каталог с файлом бота:
После этого можем запустить бота:
Заходим в Telegram, проверяем бота:
Отлично! Всё работает.
Теперь можно отключиться от сервера и закрыть окно PuTTY, бот продолжит работу.
Шаг 7. Обеспечить автоматический перезапуск бота
Из-за ошибок в коде бот может «упасть» в самый неожиданный момент. Чтобы этого не случилось, настроим автозапуск бота при старте сервера и его автоматический перезапуск при ошибках.
Это позволит боту стабильно работать даже в случае обнаружения багов. Вы сможете оперативно их исправить, а бот в это время продолжит отвечать на запросы.
Большинство современных Linux-систем используют systemd для управления службами, поэтому следующая инструкция подойдёт для последних версий Ubuntu, Debian и CentOS.
Для начала отключим бота командой:
Нам понадобится создать собственную службу, для этого в каталоге /lib/systemd/system создадим файл:
В нашем случае это будет файл /lib/systemd/system/keksbot.service . В файл поместим следующий код:
Текст в некоторых строках необходимо отредактировать относительно вашего проекта. Разберём строки, на которые нужно обратить внимание.
В поле Description указывается описание службы. Вы можете указать в ней краткую информацию о боте.
Команда для запуска бота.
Её следует поменять, если имя скрипта вашего бота отличается от index.js . В таком случае нужно будет указать следующие значения:
Папка со скриптом, который мы запускаем. В нашем случае это /opt/keksbot/ .
Сохраняем файл. В примерах далее мы будем использовать имя службы keksbot — если вы указали другое имя, не забудьте поменять его. Для установки службы воспользуемся командами:
Теперь запустим бота командой:
Готово. Теперь бот будет автоматически запускаться при старте сервера или при возникновении ошибок. Можно проверить это, завершив процесс node:
Через пять секунд бот автоматически перезапустится.
Помимо запуска мы можем управлять ботом командами:
15 полезных ботов для Telegram на все случаи жизни
Вернуться к делам минувших дней и написать продолжение обзора Telegram-ботов (первую часть см. по этой ссылке) нас побудили сразу три информационных повода.
Первый связан с расширяющейся не по дням, а по часам аудиторией коммуникационного сервиса в России, с момента блокировки последнего в 2018 году увеличившейся аккурат в два раза — с 15 до 30 миллионов человек. Двукратный рост числа пользователей находившегося вне закона мессенджера наглядно иллюстрирует эффективность работы Федеральной службы по надзору в сфере связи, информационных технологий и массовых коммуникаций, в ведении которой находится контроль за противоправной деятельностью сетевых ресурсов в Рунете. Напомним, решение об ограничении доступа к Telegram по всей стране было принято судом по иску Роскомнадзора после того, как разработчики продукта категорически отказались передать ФСБ России ключи шифрования для доступа к переписке пользователей и борьбы с терроризмом.
Всего мессенджером Telegram в мире пользуются свыше 400 млн человек, из которых более 30 млн — из России
С законодательной инициативой о прекращении гонений на Telegram ранее выступили депутаты Государственной думы, предложившие запретить блокировку коммуникационных сервисов, с помощью которых госорганы распространяют официальную информацию во время чрезвычайных ситуаций и в период повышенной готовности. В Минкомсвязи отклонили эту идею, мотивировав свой отказ возможным злоупотреблением разработчиков таких сервисов. Сам же Дуров развеял опасения чиновников и заявил, что разблокировка мессенджера может сыграть положительную роль в обеспечении национальной безопасности страны.
По словам основателя Telegram, опыт работы коммуникационного сервиса в десятках стран на протяжении последних шести лет показал, что борьба с терроризмом и право на тайну личной переписки не исключают друг друга. «Надеюсь, что учёт мировой практики и специфики современных технологий поможет российским законодателям совместить эти две задачи. Со своей стороны буду продолжать поддерживать подобные инициативы», — подчеркивал Павел Дуров. С чем связана такая неожиданная покорность господина Дурова, некогда горой стоявшего за своё детище, остаётся только догадываться. Не исключено, что виной тому стал провал блокчейн-проекта Telegram Open Network (TON), побудивший руководство «Телеграма» пересмотреть планы по развитию продукта и иначе расставить акценты.
Ну и наконец 18 июня этого года с Telegram были официально сняты ограничения (при том, что официальной информации о переданных ключах шифрования так и нет), так что теперь можно рассчитывать на еще больший рост аудитории. Павел Дуров на новость о разблокировке среагировал опять же непривычно доброжелательно по отношению к властям, заявив, что «действия властей внушают оптимизм».
Мессенджер Telegram вышел в 2013 году и в настоящий момент доступен на всех популярных платформах: Windows, macOS, Chrome OS и Linux, а также на Android и iOS
Любопытно вспомнить в связи с этими событиями довольно интересную позицию Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации, в ведении которого находится упомянутый выше Роскомнадзор. Недавно глава ведомства Максут Шадаев в эфире программы «Познер» на Первом канале признался, что Telegram среди прочих мессенджеров оказался — загибаем пальцы! — наиболее быстрым, эффективным, простым, удобным и дешёвым способом обратной связи с находившимися за рубежом россиянами в период пандемии коронавируса и их оперативного информирования о вывозных авиарейсах. «Выяснилось, что наши граждане активно используют Telegram», — поделился своим наблюдением министр, подчеркнувший, что, невзирая на блокировку ресурса по решению суда, отечественное законодательство не запрещало использование коммуникационного сервиса россиянами. «Если мессенджер технически доступен, граждане могут им пользоваться и в этом смысле ответственности не несут», — заверил руководитель Минкомсвязи России, видеозапись интервью с которым доступна для просмотра на YouTube по этой ссылке.
Министр цифрового развития, связи и массовых коммуникаций РФ Максут Шадаев объяснил, зачем ведомство использует Telegram (кадр из телепередачи «Познер» на Первом канале)
Отмечая наконец свершившуюся официальную разблокировку мессенджера, который толком так и не удалось заблокировать, публикуем очередную подборку бот-сервисов, позволяющих решать самые разные задачи и существенно расширяющих функциональные возможности одного из самых популярных мессенджеров в мире.
Бот Алёша (@aleksobot). Сервис для конвертирования исходящих текстовых сообщений в голосовой формат. Реализована поддержка нескольких движков синтеза речи и возможность подключения бота к чатам с текущими собеседниками.
Voicy (@voicybot). Электронный помощник, решающий обратную задачу: переводит все голосовые сообщения и аудиофайлы (.ogg, .flac, .wav, .mp3), которые получает, в текст. Умеет оперировать огромным количеством языков и поддерживает два движка распознавания речи Wit.ai и Google Speech, управлять которыми можно в настройках бота.
Gmail Bot (@GmailBot). Сервис, разработанный командой Telegram и позволяющий использовать мессенджер в качестве клиента Gmail для оперативного обмена почтовыми сообщениями. Работа бота возможна только после предоставления соответствующих прав доступа в настройках аккаунта Google. Отзывы о Gmail Bot в интернете положительные, но забывать о возможных рисках при работе с этим продуктом всё же не стоит.
Бот-бухгалтер (@iloveipbot). Помощник для индивидуальных предпринимателей. Умеет рассчитывать страховые взносы ИП, помогает уменьшить налог по УСН, напоминает о предстоящих платежах и сдаче отчётности. В будущем разработки обещают реализовать интеграцию бота с банковскими системами, добавить функции загрузки выписок и отправки платёжных поручений, подготовки и сдачи отчётности через интернет.
Бот-напоминатель (@SkeddyBot). Простой, но эффективный инструмент для управления напоминаниями в заданное время. Достаточно отправить боту сообщения вида «позвонить в офис через 20 минут», «взять документы завтра в 8 утра», «проверять готовность пирога каждые 10 минут», и сервис будет информировать об этом пользователя с выверенной аптекарской точностью.
YouTube Bot (@youtube). Сервис, позволяющий подписываться на обновления любимых YouTube-каналов и держать руку на пульсе происходящих в медийной платформе Google событий.
Classical Music (@music). Бот для прослушивания классической музыки. Отличная находка для почитателей творчества Баха, Генделя, Моцарта, Бетховена, Штрауса и прочих выдающихся композиторов, представителей золотого фонда мировой музыкальной культуры.
Бот для проверки утечек паролей (@MailSearchBot). Позволяет «пробить» email-адрес, логин и номер телефона на предмет их присутствия в базе скомпрометированных учётных записей. Если выяснится, что один из паролей засветился в открытом доступе, рекомендуется принять соответствующие меры по его замене.
Конструктор ботов (@BotFather). Официальный сервис Telegram для создания ботов и их интеграции с различными веб-службами. С его помощью можно создать бота для обработки пользовательских команд, отправки уведомлений, управления «умным домом» и выполнения различных действий.
Radio Archive Bot (@radiobot). Бот, предоставляющий доступ к архиву передач различных радиостанций, как российских, так и зарубежных. Транслирование аудиопотока осуществляется в формате AAC+. Данный метод сжатия обеспечивает экономию трафика и позволяет слушать радио в сетях с низкой скоростью передачи.
Бот для разработчиков (@integram_bot). Позволяет интегрировать Telegram со сторонними сервисами Trello, Gitlab, BitBucket, GitHub, Webhook, которыми пользуются программисты во всём мире для хостинга IT-проектов и их совместной разработки.
Словарный бот (@dictsbot). Сервис, предоставляющий доступ к внушительной коллекции толковых и тематических словарей на русском, украинском, английском и немецком языках. Поддерживается взаимодействие с «Википедией», а также с системами перевода «Яндекса» и Google.
Бот для распознавания треков (@yamelodybot). Сервис, функционирующий в паре с «Яндекс.Музыкой» и позволяющий идентифицировать неизвестные музыкальные композиции. Достаточно отправить боту аудиосообщение с фрагментом неизвестной мелодии продолжительностью от 5 до 10 секунд, и система автоматически определит её название и исполнителя, а также пришлёт ссылку для прослушивания полной версии трека.
Штрафы ГИБДД (@youshtraf_bot). Бот, название которого говорит само за себя. Позволяет проверять, есть ли штрафы на автомобиль и водителя, получать подробную информацию об этих штрафах: дату, время, место нарушения, статью правонарушения, фото с камер фиксации, а также оплачивать их. Поддерживается работа с базами данных ГИБДД, МАДИ, АМПП и системой «Платон». Возможен автоматический мониторинг штрафов.
RSS4YOU (@rss4you_bot). Бот, позволяющий использовать Telegram в качестве RSS-ридера для работы с новостными источниками. Поддерживает различные форматы данных и возможность разметки новостных сообщений, а также имеет в своём составе развитые средства фильтрации скачиваемых из Сети материалов.
Есть что добавить? Пишите в комментариях к обзору.