Бесплатный хостинг Telegram-бота на Google Cloud Platform

15 июня в 2020 20K 16302e2364530c79e4d0f62353549c82.jpg

Чат-боты для Telegram — простой, изящный и легковесный способ вывести общение с клиентами на новый уровень. Виртуальный собеседник может заниматься рассылкой по фильтрам, предлагать клиенту интересные для него товары и услуги, сообщать последние новости или забавно реагировать на определенные реплики человека — их функционал ограничивается лишь фантазией разработчика. Но чтобы чат-бот работал корректно и мог реализовать свой потенциал, после разработки нужно подобрать подходящий хостинг для него. Об этом я и расскажу в статье, а также о том, как настроить сервер и разместить чат-бота для Telegram.

Выбираем хостинг для телеграм-бота

Для начала быстро разберемся с юридической составляющей. В России власти заблокировали лишь серверы и сам сайт Телеграма (UPD: уже разблокировали, поражение в этой войне было неминуемо). Использование мессенджера фактически не запрещено. Но не любой российский сервер будет исправно работать с ботами для этого мессенджера. Так что перед арендой лучше уточнить у техподдержки, подойдет ли их хостинг для телеграм-бота.

У хостинга для чат-бота должна быть поддержка нескольких языков программирования. Например, хостинг для телеграм-бота на Python должен поддерживать этот язык. Аналогично, написанный на NodeJS бот должен быть развернут на сервере, в который можно подгрузить язык NodeJS.

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

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

Для развертывания бота для Telegram лучше всего подходит VDS/VPS. Он не требует наличия домена в обязательном порядке, и к нему можно будет обратиться по выделенному IP-адресу, что удобно при развертывании бота. К тому же такие серверы лучше поддерживают увеличение масштабов проекта, так что при увеличении потока посетителей вам не придется переходить на другой сервер — достаточно будет просто сменить тариф или его настройки.

Выбираем тариф

О тарифах хостингов для бота Telegram стоит поговорить отдельно. Есть целый класс бесплатных хостингов — сюда входит, например, Heroku. Они могут оказаться полезными при тестировании бота — расположите свой чат-бот на Heroku и проверьте работоспособность всех функций, прежде чем арендовать хостинг и выкладывать свое творение. Но учтите, что работоспособность на этом хостинге будет непостоянной — обычно чат-боты работают по 30 секунд, а затем отключаются на неопределенное время. Так что для полноценного развертывания вашего детища они не подойдут.

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

Ключевое требование к хостингу — стабильность подключения, поэтому от shared-хостингов для телеграм-бота лучше сразу отказаться. А вот VPS/VDS сможет обеспечить надежное подключение. Предпочтительная ОС для сервера — Ubuntu, поскольку большинство модулей для языков программирования пишутся именно под нее. Тарифы на такие виртуальные серверы начинаются от 50 рублей в месяц.

Настраиваем сервер для Telegram-бота

Рассмотрим настройку сервера на примере размещения бота, написанного на Python, который будет автоматически присылать ответы на различные команды.

После аренды VPS нам нужно подключиться к нему по протоколу SSH через специальный клиент (например, Termius), используя данные из личного кабинета на хостинге для телеграм-бота. Вам потребуются Hostname, Login, Password, Port. Вводим их в поля нового подключения. Вот как это будет выглядеть в Termius:

8a9034a1b983fe192748bbf55ab6ac6c63422827.png

Сохраняем подключение, возвращаемся на главный экран программы (здесь появляется наше новое подключение) и нажимаем на название сервера, которое мы вводили до этого:

Готово, мы попали в консоль сервера:

Отсюда мы сможем управлять сервером, подгружать нужные нам модули и библиотеки. Этим и займемся. Чтобы бот работал, серверу потребуется модуль языка Python. Мы рассматриваем бота, написанного на третьей версии языка, поэтому нам нужно установить python3. Для этого введем в консоль сервера следующие команды:

  sudo apt —reinstall install python3 -y    sudo apt —reinstall install python3-pip -y

Не забудем и про библиотеки. На «Питоне» ботов для Telegram обычно пишут с помощью библиотеки TelegramBotAPI. Для ее установки введем команду:

  pip3 install pyTelegramBotAPI

Теперь нам нужно установить удобный менеджер процессов PM2 и язык программирования NodeJS с менеджером пакетов npm для его работы:

  sudo apt install nodejs    sudo apt install npm    npm install pm2 -g

Размещаем чат-бота

С настройкой сервера покончено, можно отключаться от SSH. Теперь нам потребуется подключение к серверу по протоколу SFTP. Чтобы настроить его, заходим во вкладку SFTP в Termius, нажимаем на «select host» и выбираем имя сервера. После этого создаем папку с любым названием на латинице.

Затем копируем в нее файлы бота. Termius поддерживает drag’n’drop, так что можно просто перетащить содержимое вашей папки с ботом.

Запускаем бота

Бот готов к запуску! Для этого в консоли сервера поочередно вводим команды:

  cd имя_папки    pm2 start main.py --interpreter=python3 (замените main на имя исполняемого файла бота)

Бот запущен и работает. Чтобы удостовериться в этом, мы можем ввести в консоли сервера команду менеджера процессов:

  pm2 list

Команда выдаст в консоли список процессов, запущенных на сервере. Найдите строчку с названием бота. Если напротив нее в столбце «Status» значится «Online», бот успешно запущен.

Самый волнующий момент — проверить работу бота в самом мессенджере:

Все работает! 

jsonic +45

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

У каждого владельца аккаунта в «Телеграм» обязательно найдется несколько bots. Нередко в таком случае возникает проблема, какой хостинг выбрать для телеграм-бота.

Зачем нужны боты

Боты в Телеграм.

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

Они нашли применение во множестве областей: интернет-рекламе, в играх, интернет-торгах, мессенджерах и прочее.

Названия помощников оканчиваются на «bot». Фактически, это рабочие аккаунты, управляемые программами.

Чтобы их использовать, не требуется выходить из мессенджера для решения простых задач: задать вопрос, ответить, перевести, обучать, играть. Это армия помощников, каждому из которых можно дать задание, и они беспрекословно и точно исполнят ваши желания.

Как ими пользоваться

В «Телеграме» есть каталог ботов с ссылками на помощников. Список находится на сайте https://tgram.ru/bots/.

Нужного bot можно найти другим способом: в строке поиска. Для этого заходят в приложение и в поле с лупой пишут название робота. Помощником будет тот, з названием которого есть значок робота.

Чтобы начать взаимодействовать с bot, кликните на /start. Сразу же вы получите информацию о программе и список доступных команд.

Что такое хостинг

Слово «хостинг» означает некое хранилище. Дело в том, что после написания bot его нужно где-то хранить, чтобы он постоянно функционировал. Хостинги содержатся на общем компьютере, который называют сервером.

Хостинг предполагает аренду места на самом server. Эта услуга платная, поэтому перед разработчиками роботов вопрос хостинг для телеграм-бота всегда актуален.

Конечно, можно создать хостинг на своем домашнем ПК, но это представляет определенные трудности, а именно постоянная беспрерывная работа устройства. Само собой, это никому неудобно. Поэтому все же желательно подобрать общий хостинг для бота Telegram.

Типы

Существует несколько типов хостингов. Они различаются не только по цене, но и программному обеспечению, функционалу, объему памяти.

Общий виртуальный

Один из популярнейших. Подходит для небольших онлайн-магазинов, сайтов. Виртуальный хостинг – результат деления одного сервера на несколько частей для сдачи в аренду. Из минусов виртуального типа: наличие ограничений скорости записи или на использование ОП.

На сегодня наиболее известный тип host. Цена – от 2 до 15$ в месяц.

Виртуальный сервер

Также деление server на несколько частей для сдачи в аренду, но эти части будут независимы друг от друга, следовательно, ограничения не предусмотрены.

Это удобно тем, что можно настроить именно под свой проект или даже установить отдельное ПО. Подойдет для более крупных проектов. Цена аренды такого ресурса от 17$.

Выделенный сервер

Выделенный сервер.

Это хост – целый server. Плюс: нет зависимости от остальных клиентов провайдера. Вы как единственный админ получаете доступ к ПО, то есть осуществляете полный контроль систем.

Выделенный сервер – отличный вариант для игр, соцсетей и крупных проектов. Но и стоимость аренды такого хостинга от 50$.

Colocation

Колокейшн представляет собой хостинг, за который нужно платить провайдеру не только за аренду, но и за обслуживание server. Кроме того, есть услуга защиты данных, но она тоже платная.

Облачный сервер (Cloud-hosting)

При таком типе хоста оплата производится за объем ресурсов. Провайдер сам распределит их между серверами. Подходит в случае, когда сайт занимает несколько разных server. Плюс в том, что можно использовать ресурсы нескольких серверов. Цена – от 7$.

Разница между хостингом и доменными именами

Отличие домена состоит в том, что он предоставляет абсолютное право собственности на имя сайта. К домену никто не имеет доступа, кроме его владельца.

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

Как выбрать хостинг для приложения

Перед тем как разместить бота Telegram на какой-нибудь хостинг, для начала надо этот хостинг выбрать.

Для этого нужно учесть 4 нюанса:

  • функции и инструменты;
  • дисковое пространство;
  • цена и качество обслуживания;
  • уровень техподдержки.

По первому критерию нужно обратить внимание на такие способности хоста:

  • трафик;
  • поддержка CMS, скриптов, баз данных, технологий;
  • удобство управления;
  • доступ к сайту для копирования, удаления либо редактирования файлов на сервере;
  • возможность наблюдать за состоянием server;
  • доступ к нескольким почтовым аккаунтам;
  • защита от вирусов, спама и рекламы;
  • бесплатный пробный период или возможность вернуть средства.

При выборе объема пространства для приложения достаточно будет 100 МБ.

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

На счет службы поддержки, то ее работа должна быть беспрерывной.

Как разместить бота Телеграм

Когда сервер для бота Telegram выбран, пришло время помощника размещать. Для начала потребуется регистрация на соответствующем сайте server. Теперь у вас есть аккаунт. В него нужно зайти и нажать на создание проекта (Create new app). Если название проекта придумано, то опустите этот шаг, если нет, то назовите bot. Имя должно быть уникальным.

Проект готов. Далее нужно выбирать варинат размещения. В разделе Deploy описано, как загрузить бота на сервер.

Размещение на хостинге.

Если взять, к примеру, бесплатный server Heroku, то потребуется скачать Heroku CLI и войти через него в учетную запись, а затем открыть папку приложения через терминал.

Потом нужно инициализировать git в папке (git init) и установить ссылку на репозиторий «Геруку» (heroku git:remote -a archakov-im-telegram-bot).

Теперь нужно создать в папке с ботом Procfile и указать внутри файла команду start.

Зпуск робота производится следующим образом:

  1. git add .
  2. git commit -m ”init” .
  3. git push heroku master .

Что делать, если бот не работает

Проблема решается двумя способами. Первый способ – написать @Botfather. Он решит технологические неполадки и предоставит инструкции с описанием правильного варианта кода.

Второй способ – активировать чат с помощью команды /setprivacy. Робот активизируется. После указания адреса bot вам покажутся участки прописки кода с ошибками и путями их исправления.

Выводы

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

Детальная информация видна на видео:

Почему GCP?

При написание телеграмм ботов столкнулся с вопросом, как быстро и бесплатно сделать так, чтобы бот работал постоянно. Варианты с Heroku и Pythonanywhere имеют слишком маленькие лимиты, если у вас более одного бота. Поэтому я решил воспользоваться GCP. Платформа предоставляет бесплатно 300$ на год + огромные скидки при использование этих средств(до 94%).

Как захостить вашего бота?

Шаг 1. Регистрация на GCP

Переходим на сайт GCP и нажимаем Get started for free. Вводим свои данные и карточку. Деньги с карточки не будут списываться, если вы сами не активируете платную подписку.

Шаг 2. Создаём виртуальную машину

После регистрации вы окажетесь на главной странице сервиса. Вам необходимо выбрать в разделе Ресурсов вкладку Compute Engine. Необходимо создать новый экземпляр. Если вы не будете развертывать БД на виртуальной машине, то можете взять g1-small, иначе советую n1-standart. Необходимо будет выбрать также ОС. Я выбрал Debian GNU/Linux 9 (stretch). Всё, ВМ создана. Обычные её развертывание занимает от 1 до 5 минут.

Шаг 3. Настройка виртуальной машины

Вы можете подключиться по SSH со своего ПК или же взаимодействовать через платформу. Для этого нажмите на SSH. У вас откроется терминал Linux в новом окне. Теперь перейдем к настройке. Сначала вводим команду:

sudo apt-get update

для обновления информации об новейших версиях пакетов. После вводим:

sudo apt-get install python3-setuptools sudo apt-get install python3-pip

Сам Python устанавливать не нужно, он уже есть. Теперь необходимо установить все необходимые библиотеки. Есть небольшой нюанс, все библиотеки необходимо устанавливать дважды:

pip3 install ‘name_of_package’

для использования через коману python3, и

sudo pip3 install ‘name_of_package’

для systemd. Данная утилита поможет вам запустить бота и перезапускать его, если он упадёт. Самый простой способ запускать бота через python3, но он будет выключаться, если вы будете отключаться. Можно использовать screen, но бот не будет сам перезапускаться. Также можно использовать crontab с проверкой порта, но мне кажется этот вариант сложнее, чем systemd.

Шаг 4. Заливаем бота на сервер

Есть два способа залить вашего бота. Если вы не дружите с Git, вы можете просто заархивировать бота в .tar и залить его на сервер: После этого разархивируем его командой:

tar -xvf yourfile.tar

Теперь ваш бот хранится в папке с названием архива. Второй способ через Git. Я думаю, не стоит объяснять как это сделать людям, которые умеют его использовать. После установки его командой:

sudo apt install git

Вы можете клонировать его себе на ВМ. После этого переходим к настройке systemd. Для этого переходим в его директорию:

cd /etc/systemd/system

И создаём файл bot.service:

sudo nano bot.service

Вписываем в открывшиеся окно следующее:

 [Unit] Description=Telegram bot 'Имя бота' After=syslog.target After=network.target  [Service] Type=simple User=root WorkingDirectory=/home/название вашего юзера/название папки в которой лежит бот ExecStart=/usr/bin/python3 /home/название вашего юзера/название папки в которой лежит бот/bot.py  RestartSec=10 Restart=always  [Install] WantedBy=multi-user.target 

Закройте и соханите файл. Закрывается с помощью команды Ctrl+X. После этого введите команды по очереди:

sudo systemctl daemon-reload sudo systemctl enable bot sudo systemctl start bot sudo systemctl status bot 

Если всё будет хорошо, вы увидите примерно следующее: Всё, теперь ваш бот работает самостоятельно. Надеюсь моя статья поможет вам захостить вашего бота.

P.S.

1.Проверьте вашего бота на ошибки

Запустите вашего бота и проверьте его работу прежде, чем запускать его через systemd. Для этого перейдите в папку с ботом и запустите через python.

cd <папка вашего бота> python3 bot.py

2.Добавьте в файлы с py-скриптами кодировку

#!/usr/bin/env python # -*- coding: utf-8 -*- 

Вставить в начале файла.

3.Ошибки в systemd

Если вы проверяли бота на ошибки и он нормально работал, но он не хочет запускаться в systemd, то вы можете посмотреть логи и понять в чём ошибка просмотрев файл:

sudo nano /var/log/syslog

Вы можете скачать этот файл и просмотреть на своём компьютере через Notepad++.

4.Апдейт бота

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

sudo systemctl stop bot

Провидите все необходимые манипуляции. А потом введите следующие команды, чтобы он опять заработал:

sudo systemctl daemon-reload sudo systemctl start bot sudo systemctl status bot

Не так давно Роскомнадзор(РКН) объявил о снятии блокировок серверов Telegram. Конечно это замечательная новость, ведь блокировка хоть и не была полноценной, но приосила массу трудностей для создания и последующего хостинга ботов разработчиками.

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

Итак, вооружимся инструментарием, и приступим.

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

Любая программа, включая бота, начинается с создания проекта. В нашем случае будет использован последний на момент написания статьи .net core sdk 3.1

Необходимо иметь установленной версию не ниже 3.1,  т.к. в коде используюстя новые функции языка C#.

Всю работу мы будем проводить в консоли, поэтому открываем терминал с помощью удобного Вам способа. Если у Вас Windows то советую открыть класический cmd.

Для создания проекта выполним команду и укажем имя нового проекта simple-tg-bot:

> dotnet new console -o simple-tg-bot 

Отлично! Переходим в папку с созданым проектом,  и снова открываем терминал. На этот раз нужно добавить пакеты которые позволят удобно работать с api телеграма.

> dotnet add package Telegram.Bot > dotnet add package Telegram.Bot.Extensions.Polling 

Добавленые пакеты – проект Telegram.Bot, на сегодняшний день это самое удобное api на C#, перейдя по ссылке вы можете более детально ознакомится с решением.

TelegramBots/Telegram.Bot.NET Client for Telegram Bot API. Contribute to TelegramBots/Telegram.Bot development by creating an account on GitHub.

Бота создали, токен получили, можно писать код!

Код

Код нужно скопировать и заменить в файл Program.cs:

Здесь представлен весь код нашего телеграм бота. Задача бота проста – отвечать на каждое сообщение добавив в принятое сообщение слово Received. Так выглядит метод для обработки сообщения:

Куда же вставлять полученый токен? Нужно заменить значение статической переменной в начале программы. Все что находится в кавычках заменить на полученый от @botfather токен. Переменная находится на 13 строчке:

static string BOT_TOKEN = "%BOT_TOKEN%"; 

Запускаем!

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

> dotnet run 

После чего переходим к созданому боту и отправляем любое сообщение.

Хостим бота

Бот готов. После того как мы остановим работу программы, бот перестанет отвечать на сообщения( Держать включенным компьютер можно, но не удобно. Чтобы решить эту проблему, воспользуемся нашим хостингом.

Хостинг deploy-f решает на самом деле сразу несколько сложных задач.

Первое. Делает так, чтобы даже если ваше приложение по какой-либо причине завершило свою работу,  снова его поднимет. Это удобно когда происходит ошибка, и приложение не обработав ее сразу же завершает выполнение. Или например если не пользоватся хостингом, а запускать на VPS, то нужно настроить автоматический старт приложения если виртуальный сервер перезагрузился, что редко, но обычно бывает в самый не подходящий момент.

Второе. Подготавливает специальные “образы” из загруженого вами уже собраного приложения. Это снимает кучу проблем по настройке других хостингов, где нужно знать о многих тонких моментах. Все что от вас нужно будет – это собрать приложение по инструкции которую мы подготовили в виде статьи:

Публикация .net core приложений1. Сборка приложения Для сборки выполните команду: dotnet publish -c Release -o publish 2. Упаковка сборки в архив Добавьте в zip архив содержимое папки publish 3. Загрузка архива Загрузите архив через консоль deploy-f и следуйте инструкции 4. Настройка Добавьте нужные порты (которые открывает …

Приступим к подготовке к публикации написаное приложение!

Снова переходим к консоль и собираем приложение для того чтобы получить запускаемое приложение, которое не требует установки sdk:

> dotnet publish -c Release -o publish 

Отлично, теперь у нас появилась папка publish, содержимое которой(обязательно содержимое) нужно заархивироваь в zip архив. Будьте осторожны, некоторые архиваторы генерируют архивы не подходящего формата. Мы советуем использовать архиватор 7zip

7-Zip
Архиватор 7zip

Создаем приложение из архива

Архив готов, переходим в консоль deploy-f

Консоль – deploy-f

Нам нужно создать приложение нажав на кнопку “Запустить из архива”:

Кнопка “Запустить из архива” в консоли deploy-f

Далее выбираем созданый архив по кнопке загрузить:

Кнопка загрузки архива

После загрузки архива происходит автоматический переход на следующий шаг, где нужно выбрать нужный вариан который предлагает нам сервис после анализа архива:

Нас интересует соответственно первый вариант с .net core.

После выбора варианта на следующем шаге будет происходит сборка “образа”, за логами которой вы можете следить в окне терминала

После успешной сборки, сервис попросит назвать создаваемое приложение.

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

Приложение готово для запуска! Переходим на приложение через соответствующую кнопку, и нажимаем заветную кнопку “Запустить”

После нескольких секунд(может нескольких минут) мы получим вот такую картину, где зеленая галочка говорит нам что наше приложение запущено!

Переходим в телеграм, открываем чат с Вашим ботом и проверяем!

Используемые источники:

  • https://timeweb.com/ru/community/articles/razmeshchaem-bota-dlya-telegram-ot-vybora-hostinga-do-zapuska
  • https://stelegram.ru/faq/hosting-dlya-bota-v-telegram
  • https://habr.com/ru/post/488560/
  • https://blog.deploy-f.com/charp-tg-bot/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий