Лайфхаки

Маленькие, полезные хитрости

Запускаем телеграм-бота на сервере. Linux

04.07.2023 в 21:40

Запускаем телеграм-бота на сервере. Linux

Если Linux у вас используется вместо Windows, то работа с PyCharm будет точно такой же, поэтому второй раз писать не имеет смысла. Далее рассмотрен процесс запуска в терминале на удалённом сервере. Прекрасно, вы написали бота и хотите где-то его запустить. Например, арендовали сервер у Scaleway/DigitalOcean/AWS/etc. Запустили сервер, подключились к нему по SSH, а там чёрный экран и терминальная Linux-сессия. Во-первых, давайте посмотрим, какой интерпретатор у нас выбран по умолчанию, введя командуpython3.

Хорошим правилом будет иметь на сервере ровно ту же версию Python, что и на своей локальной машине, во избежание различных неприятностей. Если версия на сервере ниже 3.7 и/или ниже той, что установлена локально, лучше всего будет установить её отдельно. Очень рекомендую вот эту статью , по которой я для себя написал простой скрипт для автоматизации рутинных действий. Итак, интерпретатор установлен, теперь пора создать каталог, куда положим файлы бота. Выполните по очереди следующие команды:

mkdir mybot cd mybot python3.7 -m venv venv source venv/bin/activate pip install pytelegrambotapi deactivate

В результате должно получиться примерно то же самое, что на скриншоте ниже, с той лишь разницей, что я прервал процесс установки библиотеки для читабельности. Обратите внимание, что после подгрузки файла venv/bin/activate, перед названием пользователя и текущего каталога появится приписка (venv), означающая, что мы «вошли» в виртуальное окружение и устанавливаем библиотеки именно в него.

Запускаем телеграм-бота на сервере. Linux

Бесплатный хостинг для телеграм-бота. Бесплатный хостинг для Telegram-бота или Discord-бота на Python и не только. Обзор вариантов

Когда у вас небольшой проект (например, телеграмм бот или дискорд бот), платить лишние деньги за хостинг не хочется. Давайте попробуем разобраться, какие есть варианты бесплатного – или условно бесплатного – хостинга для ботов.

Специализированные сервисы для хостинга Телеграмм ботов и Дискорд ботов  

    Heroku - облако, идеально подходящее для размещения телеграм-ботов и Discord-ботов. Есть совсем недорогие тарифы (ранее был бесплатный, но его недавно убрали). Единственным препятствием является необходимость оплаты картой иностранного банка.

    Amvera Cloud - российский аналог Heroku. Как и в Heroku, есть возможность развертывать приложения в контейнерах и обновлять их через push в GIT. Сейчас там идет полностью бесплатный бета-тест, который продлится еще некоторое время. Кроме того, при регистрации будет начислено 1000 руб., которых хватит на несколько месяцев бесплатного использования после окончания бета-теста.

    Pythonanywhere . Сервис заточен на хостинг проектов на Python. Однако на бесплатном тарифе нельзя использовать pyTelegramApi, что затрудняет развертывание на нем именно Telegram-ботов.

Бесплатные VPS хостинги

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

Есть несколько готовых подборок, приведем одну из ранее размещенных на Хабр поссылке.

Google Cloud Platform. Сервис App Engine

Сервис позволяет развернуть приложения на языках Python, PHP, Go, Ruby, Java, JavaScript(Node.js).

Минус бесплатной версии - закрытая для записи файловая система, что не позволит вашему боту сохранять файлы.

Классическое облако с serverless функционалом

Как правило, крупные облачные провайдеры, такие как Яндекс, Сбер и VK, предлагают стартовую сумму на тестирование их облаков, равную нескольким тысячам рублей. 

Недостатком является стоимость минимальной виртуальной машины, которая съедает тестовые деньги за 1-2 месяца.

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


Хостинг для телеграм-бота Python. Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7 +13

Очень часто возникающий вопрос: где можно разместить скрипты на Python, Flask-приложение, телеграм или дискорд ботов?

Один из вариантов — на своем компьютере при наличии внешнего IP-адреса и опыта в настройке проброса портов на роутере. Или другие сервисы, как правило, требующие платной подписки.

Цель этот статьи - подробная инструкция, как сделать хостинг Python-скриптов бесплатно и доступным 24/7 на примере телеграм-бота

Шаг 0 - регистрация бота

Существует огромное количество туториалов, как получить токен, поэтому все по-простому. Находим в телеграм BotFather, регистрируем нового бота, выбираем ему имя, получаем токен вида: 127466748171:HJfwijfw88jf32lc9FHjwpfkfgwerhjf

Он нам понадобится в дальнейшем

Шаг 1 - регистрируемся на Repl.it

Создаем новый проект на Python

Шаг 2 - Пишем код бота

В проекте будет создан файл main.py. В нем размещаем код бота:

Тут стоит обратить на установку модуля pytelegrambotapi: импортируем сначалаpipи потом выполняем его через:pip.main().

Бесплатный хостинг для телеграм-бота Python. Какой хостинг выбрать и купить для Телеграмм бота, VK, Viber и других?

Мы в ChatLabs не привязываем клиентов к определенному hosting и предлагаем максимально гибкие варианты. В этой статье не делаем обзоры лучших хостингов для ботов на Питоне, Node JS, JAVA и др., а делимся реальным опытом: что использует бизнес в разных нишах (интернет-магазины, стартапы, услуги доставки, отдел кадров и HR, инфобизнес), как подобрать сервер, где выгоднее разместить бота.

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

Бесплатные хостинги для ботов Телеграм ограничены по функционалу (проекты, трафик, базы данных). У shared-hosting нюансы с ПО: к примеру, если чат-бот для Телеграм создан на Python с использованием фреймворка Flask или Django, то накатить нужное ПО для работы chat bot не получится. Также для shared-хостинга нужен домен (для VPS необязателен, т.к. можно обращаться по выделенному IP-адресу).

Выделенные сервера (Dedicated Server) только под нужды бота заказывать не стоит: как правило, часть ресурсов просто не используется. Но если у вас есть выделенный сервер под текущие проекты, на него можно поставить Телеграм-бота. Получается, что установка бесплатная (в рамках текущего тарифного плана).

Оптимальный вариант – VPS и VDS с ежедневными бэкапами, хорошим аптаймом, панелью управления или root-доступами для настройки. Один из таких – Fozzy . Но есть тарифы на eg.ru, FirstVDS, Cloud4box, Sprinthost, Timeweb, Simplecloud. Ниже о том, как на них сэкономить.

Бесплатный хостинг для бота телеграм на php. Хостинг или сервер?

Часто разработчики ботов сталкиваются с вопросом: бот или его прототип готов, всё отлично работает в локальном окружении, и пора бы запустить бота в проде - но где его захостить?

Конечно, это зависит от языка программирования, на котором написан ваш Telegram-бот.

И конечно, быстрый гугл-поиск подскажет, что если ваш бот написан наPythonилиNode JS, то для его хостинга потребуется аренда сервера.

Но может попробуем обойтись обычным shared-хостингом? Ведь у многих есть бесплатный тестовый период вплоть до 30 дней - вполне можно настроить бота, обкатать MVP и понять, стоит ли двигаться дальше и платить деньги.

Запускаем телеграм-бота на сервере. Linux 01

С каждым днем появляется всё больше хостинг-провайдеров, которые предоставляют тарифные планы с поддержкой не только PHP, как было раньше, но и таких языков как Python, Ruby, Node JS.

Я создал двух простых ботов, и оба разметил на том же хостинге, на котором работает и этот сайт. Вот этот @hosting_telegram_php_bot - на PHP, и второй бот

Это хостинг Beget . Он поддерживаетPython. И удобен тем, что дает 30 дней для бесплатного теста . А также удобным интерфейсом, так что часть операций можно будет сделать через визуальные настройки, если вы не очень любите работу с консолью (хотя совсем без неё, для бота на Python, обойтись не удастся).

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

Попробую изложить всё по шагам.

Во-первых, если вы решили разместить телеграм бота на хостинге, вам потребуется доменное имя.

Запускаем телеграм-бота на сервере. Linux 02

Запускаем телеграм-бота на сервере. Linux 03

Как запустить телеграм-бота на пк. Как запустить бота?


Первый и самый простой вариант – зайти в каталог с исполняемым файлов и прописать python3 bot.py, но тогда при закрытии putty бот будет выключаться.Второй вариант – запустить бота с помощью– модуль, который создаёт параллельные рабочие столы, но тогда бот не будет перезапускаться автоматически в случае падения, а это происходит часто – несколько раз в неделю из-за ночного перезапуска серверов telegram (в 3:00 по МСК).Третий способ –– cистемный менеджер, демон инициализации других демонов в Linux. Проще говоря, systemd запустит бота и будет перезапускать его в случае падения.Установим systemd:

apt-get install systemd

Создайте файл на Вашем ПК с именем bot.service с таким содержанием:

Description=Telegram bot 'Town Wars' After=syslog.target After=network.target Type=simple User=root WorkingDirectory=/usr/local/bin/bot ExecStart=/usr/bin/python3 /usr/local/bin/bot/bot.py RestartSec=10 Restart=always WantedBy=multi-user.target

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

pscp.exe "C:\Users\Ilya\PycharmProjects\Bot\bot.service" root@123.123.12.12:/etc/systemd/system

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

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

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

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

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