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

  • Личный сайт Новикова Максима Глебовича
  • Последние записи
  • Архив
  • Друзья
  • Профиль

Дневник злостного критика-рецидивиста — жуткого зануды
Слесарь, электрик, программист.

  • Теги
  • /QR-кодadobe premierecellulailereclipseiconbit nettab thorjavakotlinlinuxmccullochribbon xml editorribbonxmleditorscintillatable2htmltelegramwhatsappwi-fiЁлочкаАвтомобильАндроидАномалияАфераБелкаБилайнБрейвикВДНХВалежникВеснаВидеоурокиВиноградовВнуковоВоротаВыборыГазГайдпаркГрафеновая лампочкаГрунтДачаДельфиЖивотное колесоЗаборИнструкцииКалибриллаКолесникКолодецКультураКурскЛампыЛесЛинуксМАКС авиасалонНаукаО_компьютере_начинающимОбъективыОпросОцифровкаПенсияПланшетПодъездПолитехнический музейПолитикаПрограммированиеПустельгаПылесосРаботаРаритетыРеновацияРисункиРоссияСМИСарайСарай_catsloverСбербанкСканерыСклоны тоннеляСколковоТеле2ТерминологияТипографикаУточкиФобос-ГрунтФотоФотовыставкаХолодильникЧайкиЭкономикаЭлектричествобардакводосчётчикизвуккомпьютерыподсветка синтаксисареальностьрелигиясалютсмартфоныфейерверк

Как бесплатно разместить бота для Telegram с WebHook

Деплой Telegram бота на VPS + Docker | Django School

Для впервые читающих меня на тему мессенджера Telegram (современного аналога ICQ, клона WhatsApp) и написания к нему ботов, замечу, что несмотря на название «бот», эта сущность не рассылает спам, не регистрируется на форумах и не подбирает пароли. Словом «бот» разработчики платформы Telegram называют дополнения к своему мессенджеру, расширяющие его функционал. Взаимодействие с этими дополнениями осуществляется так же, как и с людьми, посредством контактов. Фактически, вместо человека за псевдонимом контакта скрывается программа-бот, которая по команде пользователя выполняет те или иные действия — выдаёт прогноз погоды, выводит курсы валют и т.п. Ничего зловредного такая программа не делает и сделать не может.

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

Замечу, что есть и другой способ взаимодействие бота и его кода, в котором код сам опрашивает бота через равные промежутки времени на предмет поступления новых команд (long polling). Но этот способ хуже по всем параметрам. Во-первых, он даёт задержку, достигающую величины заданного интервала опроса, во-вторых, постоянно работающий код прослушивания даёт нагрузку на сервер хостера, а в-третьих, работающие в фоне скрипты (демоны), как правило, запрещены на бесплатных сайтах, или действие скриптов ограничено по времени.

Итак, предыдущий мой пост был посвящён развёртыванию бота для мессенджера Telegram с облачной среды разработки IDE Cloud9 на бесплатный облачный хостинг Heroku. К сожалению, бесплатный тарифный план этого хостинга подразумевает 18-часовую работу сервера и 6-часовой простой за сутки, что вполне подходит для обучения созданию ботов, их тестирования и даже начального периода его эксплуатации среди друзей. Но, к сожалению, для широкого выхода на люди нужны другие условия, не ограничивающие бота по длительности работы.

РАЗМЕЩАЕМ БОТА НА СЕРВЕРЕ | Телеграм боты ч. 5

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

Непременным условием для работы бота через WebHook является защищённый канал передачи данных между сервером мессенджера и сервером хостера. Защищённый канал реализуется протоколом передачи данных https. Для установки этого протокола нужно установить на сайт, где будет работать код бота, ключи SSL. К сожалению, почти все бесплатные хостинги не разрешают установку SSL, и позволяют работать только по http.

Я стал искать хостинг, который бы, как и Heroku, предоставлял возможность использования SSL, но не имел бы ограничения по количеству рабочего времени сервера. Но поиски были тщетными. Единственное, что я ещё нашёл бесплатного с SSL — это облачный сервис Google Cloud Platform.

Google Cloud Platform

Что я могу сказать про Google Cloud Platform? Это сложнейшая облачная система, внутри которой есть сервис App Engine для создания и размещения приложений на языках Python, PHP, Go, Ruby, Java и JavaScript (Node.js). Но у неё есть минус — в бесплатном варианте файловая система сервиса закрыта для записи, то есть, сайт не может сохранять у себя файлы, а без этого у меня не получилось заставить бота отдавать пользователю изображения, скаченные с другого, внешнего ресурса.

Другим недостатком применения Google Cloud Platform в качестве хостера ботов является её чрезмерная сложность, особенно когда плохо понимаешь английский язык или не находишься глубоко в теме облачной разработки приложений. Тем не менее, если алгоритм работы бота не предусматривает сохранение файлов, то этот хостинг вполне подойдёт для нашей цели, обеспечив боту круглосуточную, быструю и бесперебойную работу.

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

Итак, для развёртывания приложения я скачал файлы созданного в App Engine проекта к себе на диск (с файлом настроек проекта app.yaml) и специальную утилиту Google App Engine SDK for PHP. Утилита написана на языке Python, поэтому требует его предварительной установки на компьютер. В процессе инсталляции будет предложено скачать его по ссылке и установить. При установке Python обязательно отметьте для установки компонент «Add python.exe to Path». После установки языка можно продолжить установку утилиты.

После завершения установки запускаем Google App Engine Launcher, добавляем в него скаченный ранее, существующий в App Engine проект, и теперь можем его разворачивать кнопкой Deploy. Редактирование файлов проекта (за исключением файла app.yaml) утилита не осуществляет, так что всё делаем в любом внешнем редакторе, и внутрь страшного App Engine можем больше не возвращаться.

Еще по теме:  Бот для создания постов в Телеграмм канале с скрытом текстом

Если после успешного развёртывания браузер не видит изменений, проверьте внутри App Engine в разделе Compute в пункте Versions, весь ли трафик направлен на вашу последнюю версию. Все старые версии лучше удалить (на бесплатном тарифе нельзя создавать больше 10 версий).

Погоняв своего бота у Google, я всё же решил продолжить поиски, поскольку не смог обойтись при пересылке файлов без их записи в файловую систему. К сожалению, других бесплатных хостингов с SSL мне не попадалось, но я набрёл на очень интересный вариант решения проблемы — CDN-сервис CloudFlare.

Бесплатный хостинг + бесплатный домен 2-го уровня + бесплатная CDN

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

Дальнейшее изучение вопроса показало, что для работы этой системы нужно, чтобы у сайта было доменное имя 2-го уровня вида «имя.рф». Однако все бесплатные хостинги дают имена 3-го уровня типа «имя.хостинг.рф». Но они обычно позволяют линковать к сайтам внешние доменные имена. То есть, можно приобрести отдельно домен 2-го уровня и бесплатно прилинковать его к сайту на бесплатном хостинге.

В принципе, домены 2-го уровня стоят относительно недорого. Так, домен в зоне .ru вообще можно купить всего за 99 рублей, и продлевать его за ту же цену каждый год. Но зачем платить, если есть халява, а она есть! Некоторые небольшие страны, желая популяризовать себя в мире, предлагают бесплатную регистрацию доменного имени 2-го уровня в доменной зоне своей страны.

Так почему бы не воспользоваться этим? Это можно сделать на сайте freenom.com за несколько минут. Там предлагаются домены в зонах .tk (острова Токелау), .ml (Мали), .ga (Габона), .cf (Центральноафриканская Республика) и .gq (Экваториальная Гвинея).

Регистрировать домены бесплатно можно на срок до 12 месяцев. Через год, за 2 недели до истечения срока, вам по почте придёт напоминание о его продлении, которое производится фактически одним кликом мышки.

Если вы уже имеете аккаунт на freenom.com с зарегистрированными доменными именами, но при попытке добавления нового домена возникает ошибка «Error code 0x0116a» с надписью «At this moment we are unable to register any domains or other services in this account», что в переводе означает «На данный момент мы не можем зарегистрировать любые домены или другие услуги в этом аккаунте», просто создайте другой аккаунт. Замечено, что при регистрации не все E-mail’ы могут подойти. Так, у меня каким-то образом засветились там все мои адреса на mail и yandex, и второй аккаунт я регистрировал уже на новый gmail.

  1. Ищем бесплатный хостинг, поддерживающий языки программирования, позволяющие писать на диск. Язык JavaScript по этой причине не подойдёт, но, например, PHP сейчас поддерживается практически на любом бесплатном хостинге. Также, наш потенциальный хостер должен предоставлять возможность линковать к нашему сайту внешние доменные имена. Эта услуга тоже есть практически у любого бесплатного хостера. Регистрируемся, заходим в панель управления хостингом, ищем раздел управления доменами, и копируем оттуда имена двух первых DNS-серверов. Они нам пригодятся при перенаправлении будущего доменного имени на наш сайт.
  2. Переходим на сайт freenom.com, регистрируемся там и регистрируем желаемое доменное имя второго уровня на максимальный бесплатный срок (12 месяцев). Затем переходим там в Domains -> My Domains, напротив нашего нового домена нажимаем кнопку Manage Domain, переходим в Managment Tools -> Nameservers, переключаем кнопку выбора в положение Use custom nameservers и вбиваем в два верхних поля скопированные нами ранее имена DNS-серверов хостера. Сохраняем изменения. Несмотря на предупреждение, что доменное имя заработает в течение 24 часов, обычно оно начинает работать уже в течение несколько минут.
  3. Возвращаемся к нашему хостеру, и у него в разделе управления доменами прописываем только что зарегистрированное доменное имя. Линкуем его там к папке сайта. Через несколько минут линковка хостера тоже вступает в силу, и теперь заготовку нашего нового сайта становится возможным открывать в браузере по новому доменному имени 2-го уровня. Ура!
  4. Теперь переходим на сайт CloudFlare, регистрируемся, указываем там новое доменное имя нашего сайта, и действуем далее согласно указаниям на сайте. В конце нам выдаётся два новых имени DNS-сервера, которыми надо заменить соответствующие имена на freenom.com, скопированные у нашего хостера. Замечу, что переключение на https обещается в течение 24 часов, но у меня опять же заработало уже через несколько минут.
  5. Переходим на сайт freenom.com, открываем уже знакомую нам страницу с DNS-серверами, и меняем там имена, скопированные у хостера, именами, выданными сервисом CloudFlare. Если поля имён DNS-серверов неактивны и не позволяют себя редактировать, просто переключим туда-обратно опцию выбора Use custom nameservers. Всё сохраняем и выходим. Всё!

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

Еще по теме:  Нет ссылки на канал ТГ

Но ведь у нас другая цель, верно? Кстати, кеширование можно отключить, включив на CloudFlare режим разработчика (Development Mode). Это полезно, если вы вносите изменения на статических страницах вашего сайта, и хотите при обновлении сразу видеть результат в браузере. Также полезно оставить включенной функцию Always Online, которая будет отдавать запрошенные страницы из кеша даже если наш сайт вдруг временно отключится. Это предотвратит блокировку нашего бесплатного доменного имени, которая может произойти в случае его неиспользования.

Теперь несколько слов о блокировках некоторых IP-адресов CloudFlare Роскомнадзором. Периодически эта тема всплывает в российских СМИ (особенно актуальна она была в 2013 году), но нас она не затрагивает. Серверы Telegram, как и серверы CloudFlare, расположены не в России, и блокировка последних роскомнадзором нам не страшна — они всё равно будут запрашиваться серверами Telegram извне России. Гораздо хуже, если заблокируют сам Telegram, о возможности чего тоже не раз проскакивало в СМИ. Но я не думаю, что до этого дойдёт, о чём я уже писал ранее.

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

Источник: novikovmaxim.livejournal.com

Как разместить Telegram-бота: от выбора хостинга до запуска

Как разместить Telegram-бота

Чат-боты для 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:

Еще по теме:  Хорошие капперы в Телеграмме на настольный теннис

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

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

Отсюда мы сможем управлять сервером, подгружать нужные нам модули и библиотеки. Этим и займемся. Чтобы бот работал, серверу потребуется модуль языка 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», бот успешно запущен.

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

Источник: e-sevenweb.ru

Регистрируем хостинг для работы с Telegram Bots API

Для работы с Telegram Bot API нам необходим качественный хостинг. Возможность в нем заказать сертификат SSL. Также очень важна скорость работы, оперативная и компетентная служба поддержки.

Для работы бота нужен хороший хостинг и SSL-сертификат. Поэтому нужно найти где будут хоститься скрипты-обработчики запросов Telegram Bot API. Выбирая хостинг, я просмотрел кучу сайтов с обзорами и отзывами. Главным критерием была надежность и хорошая служба поддержки. Нельзя чтобы сайт зависал, или вообще не отзывался на действия пользователя.

А скорость работы службы поддержки и ее компетенция поможет вам решить любые вопросы, связанные с работой хостинга. Практически везде в лидерах был TimeWeb. На нем и остановился. Теперь все по порядку, как и что я делал. * * * 1. Зашел на сайт TimeWeb, выбрал вкладку Хостинг.

* * * 2. Выбрал тариф Year+, при оплате за год месяц получается 99 рублей

* * * 3. Заполнил обязательные поля: ФИО, E-mail, Условия оферты. Также указал логин, если его не указать, то система Вам создаст автоматически, например, «Cnn1339».

* * * 4. После нажатия кнопки «Заказать» ко мне на почту пришло письмо с данными для авторизации, и автоматически переадресовало на страницу управления аккаунта. В разделе «Оплата услуг» оплатил год хостинга, это было быстро и удобно.

* * * 5. Далее я зашел в раздел «Домены и поддомены».

* * * 6. Выбрал услугу «Зарегистрировать домен».

* * * 7. В текстовом поле указываем домен, я регистрировал домен iwantlive.ru специально для статьи, нажимаем на кнопку «Добавить к регистрации». Хочу заметить, что хостинг при оплате за год предоставляет бонус на регистрацию домена в зоне .ru, поэтому при оплате выберите способ оплаты домена «использовать бонус».

* * * 8. В открывшемся окне нажал кнопку «Добавить администратора». Заполнил все необходимые регистрационные данные, на этом шаге желательно указывать реальные данные, потому что в спорной ситуации нужно будет подтвердить свое право на домен. Далее нажал кнопку «Зарегистрировать домен». После этой процедуры к вам на указанные адрес администратора домена будут приходить письма со статусом регистрации домена.

* * * 9. Теперь необходимо зайти в раздел «Сайты», там вы увидите созданный сайт «Основной сайт», я его удалил и добавил новый сайт под один из своих проектов.

* * * 10. Указываем название и комментарий.

* * * 11. После создания сайта необходимо привязать к нему наш зарегистрированный домен, он хоть пока еще не прошел процедуру регистрации, и скорее всего будет доступен для работы через 4-6 часов, но мы его все равно можем уже привязать к нашему сайту.

* * * 12. Для этого просто в отрывшемся окне выбираем наш домен. Если вы хотите уже сразу посмотреть, что будет выводиться то можете привязать технический домен, он в списке будет доступен, для него просто повторите процедуру. И тогда будут привязаны 2 домена.

* * * 13. Потом мы заходим в раздел «Файловый менеджер» выбираем свой сайт, двойным кликом заходим в него, видим там директорию «public_html» в ней лежат автоматически сгенерированные файлы нашего сайта, по умолчанию это директория «cgi-bin» и файл index.htm.

* * * 14. После того как домен будет зарегистрирован, мы можем заказать SSL сертификат. Для этого выбираем в меню «Дополнительные услуги»

* * * 15. Далее услугу «SSL-сертификаты»

* * * 16. Среди предлагаемых сертификатов мне нравиться «SSL Let`s Encrypt», потому что он бесплатный. Его предоставляют на 3 месяца, и в случае если вы его не отзываете его продлевают еще на 3 месяца и так далее. Нажимаете кнопку «Заказать» и примерно в течении 30 минут его вам изготовят, установят и настроят.

Источник: imakebots.ru

Рейтинг
( Пока оценок нет )
Загрузка ...