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

Содержание

Как только на территории РФ вступил в силу запрет на анонимность в мессенджерах, у меня дошли руки написать пост про telegram-бота. По ходу создания бота столкнулся с большим количеством проблем, которые пришлось решать по отдельности, и буквально выцеживать крупинки информации со всего интернета. И вот после нескольких месяцев страданий и мучений (кодинг – не основное моё занятие) я наконец-то закончил с ботом, разобрался со всеми проблемами и готов поведать свою историю Вам.

Первые шаги

Внимание: token – единственный идентификационный ключ к боту. Нигде не выкладывайте его, иначе другие люди смогут управлять Вашим ботом. Бот с данным token на момент выкладывания статьи удалён.

Какой язык программирования выбрать для написания бота?

Тут я долго не заморачивался и остановился на Python, так как знаю его достаточно хорошо, да и удобная библиотека тоже присутствует. Я решил использовать PyTelagramBotAPI (на момент написания этой статьи последняя доступная версия 3.5.1).

Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг)

Перейдём к первому коду.

Импортируем библиотеку PyTelegramBotAPI.

# -*- coding: utf-8 -*- import telebot
bot = telebot.TeleBot(«523870826:AAF0O8T-e7riRi8m6qlRz4pBKKdh0OfHKj8»)

Напишем простую обработку сообщений с помощью декоратора bot.message_handler.

Поставим бота в режим постоянной обработки информации, приходящей от серверов telegram.

bot.polling(none_stop=True, interval=0)

В переменной message telegram передаёт словарь (map) такого вида:

, ‘date’: None, ‘chat’: < ‘type’: ‘private’, ‘last_name’: None, ‘first_name’: None, ‘username’: None, ‘id’: None, ‘title’: None, ‘all_members_are_administrators’: None, ‘photo’: None, ‘description’: None, ‘invite_link’: None, ‘pinned_message’: None, ‘sticker_set_name’: None, ‘can_set_sticker_set’: None>, ‘forward_from_chat’: None, ‘forward_from’: None, ‘forward_date’: None, ‘reply_to_message’: None, ‘edit_date’: None, ‘author_signature’: None, ‘text’: ‘/start’, ‘entities’: ‘[]’, ‘caption_entities’: None, ‘audio’: None, ‘document’: None, ‘photo’: None, ‘sticker’: None, ‘video’: None, ‘video_note’: None, ‘voice’: None, ‘caption’: None, ‘contact’: None, ‘location’: None, ‘venue’: None, ‘new_chat_member’: None, ‘new_chat_members’: None, ‘left_chat_member’: None, ‘new_chat_title’: None, ‘new_chat_photo’: None, ‘delete_chat_photo’: None, ‘group_chat_created’: None, ‘supergroup_chat_created’: None, ‘channel_chat_created’: None, ‘migrate_to_chat_id’: None, ‘migrate_from_chat_id’: None, ‘pinned_message’: None, ‘invoice’: None, ‘successful_payment’: None>

Также существуют другие декораторы, которые могут принимать аудиофайлы, видео, картинки, документы, геолокацию и т.д.

Конечный код.

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

Для сохранения данных о пользователях решил воспользоваться базой данных sqlite3.

import sqlite3 connection = sqlite3.connect(«database», check_same_thread = True) cursor = connection.cursor() cursor.execute(«CREATE TABLE IF NOT EXISTS Inventory_on (ID INT, ‘Primary weapon’ TEXT, ‘Secondary weapon’ TEXT)») cursor.execute(«CREATE TABLE IF NOT EXISTS Clans (Name TEXT, Points INT)») cursor.execute(«CREATE TABLE IF NOT EXISTS WorkStatus (ID INT, Status INT)») connection.commit() connection.close()

Параллельные процессы запускал с помощью библиотеки threading. Например: функция расчета битв.

import threading threading.Thread(target=name_of_your_function).start()

Дальше всё зависит только от Вашей фантазии.

Где запустить Вашего бота?

Свой собственный ПК не хочется оставлять включенным 24/7, да и не практично это. Поэтому я решил воспользоваться бесплатным сервисом heroku, но меня постигла неудача из-за выбранной мною БД. Оказалось, что при каждом перезапуске бота, heroku удаляет все коммиты sqlite3 за последний сеанс без исключений.

После чего, я решил купить VDS (Virtual Dedicated Server, виртуальный выделенный сервер) – удаленный ПК, на котором выделяется определенная мощность и память под Вас, и к командной строке которого Вам даётся доступ. Чаще всего операционной системой такой машинки будет linux. Плата небольшая – 400 руб./месяц, так что без особых моральных страданий оплатил VDS на основе Debian GNU/Linux и начал разбираться с тем, как мне включить бота на удалённом сервере.

Как же подключаться к VDS?

Есть разные методы, я решил по SSH-соединению через Putty. Скачиваем Putty через официальный сайт и открываем. Вводим IP-address VDS и нажимаем open.

Должно открыться такое окно, где нужно ввести логин и пароль от сервера.

Все вышеупомянутые данные выдаст компания, у которой Вы приобретёте VDS. Далее VDS – сервер.

Как установить на сервер все необходимые Вам языки программирования и библиотеки?

Тут все просто. Введя эти 5 команд в консоль сервера в данной последовательности, Вы установите на сервер python3, setuptools, pip3 и библиотеку pyTelegramBotAPI.

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

apt-get update apt-get install python3 apt-get install python3-setuptools apt-get install python3-pip pip3 install pyTelegramBotAPI

Все дополнительные библиотеки, которые не входят в основной пакет python3, также необходимо установить по принципу.

pip3 install ‘name_of_site_package’

Как загрузить файлы с моего ПК на сервер?

Для начала создадим папку, в который будем заливать все необходимые файлы. На сервере пройдем в каталог /usr/local/bin и создадим папку bot.

cd /usr/local/bin mkdir bot

У меня на ПК установлен windows, соответственно и команды будут для командной строки windows. Для начала необходимо пройти в каталог, где находится putty.exe.

cd /program files/putty

Далее загружаем bot.py, который находится в каталоге C:UsersIlyaPycharmProjectsBot (нужно подставить Ваш каталог) в каталог на сервере /usr/local/bin/bot.

Как скачать файлы с сервера на ПК?

Так же, как и при загрузке файлов на сервер в командной строке в каталог, где лежит putty.exe. И вводим эту команду, чтобы скачать файл database на рабочий стол Вашего ПК.

Как запустить бота?

Первый и самый простой вариант – зайти в каталог с исполняемым файлов и прописать python3 bot.py, но тогда при закрытии putty бот будет выключаться.

Второй вариант – запустить бота с помощью screen – модуль, который создаёт параллельные рабочие столы, но тогда бот не будет перезапускаться автоматически в случае падения, а это происходит часто – несколько раз в неделю из-за ночного перезапуска серверов telegram (в 3:00 по МСК).

Третий способ – systemd – cистемный менеджер, демон инициализации других демонов в Linux. Проще говоря, systemd запустит бота и будет перезапускать его в случае падения.

apt-get install systemd
[Unit] Description=Telegram bot ‘Town Wars’ After=syslog.target After=network.target [Service] Type=simple User=root WorkingDirectory=/usr/local/bin/bot ExecStart=/usr/bin/python3 /usr/local/bin/bot/bot.py RestartSec=10 Restart=always [Install] WantedBy=multi-user.target

И загружаем его в нужный каталог:

Далее нужно прописать 4 команды в консоли сервера:

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

В моём случаи из-за определённых ошибок реализации, а конкретно многопоточности, пришлось переносить функцию для расчёта битв (battle_counter.py) в отдельного демона.

[Unit] Description=Battle counter for telegram bot ‘Town Wars’ After=syslog.target After=network.target [Service] Type=simple User=root WorkingDirectory=/usr/local/bin/bot ExecStart=/usr/bin/python3 /usr/local/bin/bot/battle_counter.py RestartSec=10 Restart=always [Install] WantedBy=multi-user.target

После чего должно появится сообщение примерно такого содержания:

Ваш бот запущен и готов к работе!

БЛАГОДАРНОСТИ

Это был мой первый относительно большой проект и я столкнулся с колоссальным количеством новых для меня проблем. Огромную благодарность хочу выразить Yurii Drake, который помог мне разобраться с ними!

Источник: habr.com

Размещаем бота для Telegram: от выбора хостинга до запуска

Размещаем бота для Telegram

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

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

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

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

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

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

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

Еще по теме:  Hiveos Telegram bot команды

Запустите свой VDS-сервер в Timeweb

От 169 рублей в месяц

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

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

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

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

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

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

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

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

Termius SSH

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

Подключение к серверу

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

Консоль сервера

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

Источник: timeweb.com

Сервер для бота Telegram: как разместить и какой хостинг выбрать

FAQ

Автор fast12v0_steleg На чтение 6 мин Просмотров 2.2к. Опубликовано 30.07.2020

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Еще по теме:  Telegram и камера на galaxy Samsung

Хостинг предполагает аренду места на самом 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 .

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

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

Выводы

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

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

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

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