Всем привет. Наверняка, если вы умеете программировать, и пользуетесь телеграмом, вам приходила в голову мысль написать своего бота, к тому же мессенджер предоставляет свой API для ботов, с хорошей документацией, а туториалов по всему интернету накидано немало. Но даже если вы и написали бота, то возникает следующая проблема: хостинг. Для «легких» проектов отлично подходит heroku, но у новичков нередко случаются проблемы с заливкой своих проектов туда. Об этом и пойдет речь в этой статье.
id ‘com.github.johnrengelman.shadow’ version ‘2.0.4’
id ‘application’
group ‘com.senderman’
version ‘1.0’
mainClassName = ‘com.annimon.tgbotsmodule.Runner’
sourceCompatibility = 10
repositories {
mavenCentral ( )
dependencies {
implementation ‘com.annimon:tgbots-module:0.1’
mergeServiceFiles ( )
exclude ‘META-INF/*.DSA’
exclude ‘META-INF/*.RSA’
И напишем простого эхобота. Комментировать не буду, код слишком простой и понятный, да и гайд есть.
package com.senderman.examplebot ;
import com.annimon.tgbotsmodule.BotHandler ;
import com.annimon.tgbotsmodule.BotModule ;
import com.annimon.tgbotsmodule.Runner ;
import com.annimon.tgbotsmodule.beans.Config ;
import java.util.List ;
public class ExampleBot implements BotModule {
public static void main ( String [ ] args ) {
final var profile = ( args. length >= 1 ! args [ 0 ] . isEmpty ( ) ) ? args [ 0 ] : «» ;
Runner. run ( profile, List. of ( new ExampleBot ( ) ) ) ;
public BotHandler botHandler ( Config config ) {
return new ExampleBotHandler ( ) ;
package com.senderman.examplebot ;
import com.annimon.tgbotsmodule.BotHandler ;
import org.telegram.telegrambots.meta.api.methods.BotApiMethod ;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage ;
import org.telegram.telegrambots.meta.api.objects.Message ;
import org.telegram.telegrambots.meta.api.objects.Update ;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException ;
import org.telegram.telegrambots.meta.logging.BotLogger ;
public class ExampleBotHandler extends BotHandler {
public String getBotUsername ( ) {
return System. getenv ( «username» ) ;
public String getBotToken ( ) {
return System. getenv ( «token» ) ;
public BotApiMethod onUpdate ( Update update ) {
if ( ! update. hasMessage ( ) ) {
return null ;
Message message = update. getMessage ( ) ;
if ( ! message. hasText ( ) ) {
return null ;
String text = message. getText ( ) ;
long chatId = message. getChatId ( ) ;
SendMessage sm = new SendMessage ( chatId, text ) ;
execute ( sm ) ;
} catch ( TelegramApiException e ) {
BotLogger. error ( «SEND» , e. toString ( ) ) ;
return null ;
Бесплатные хостинги для сайта и бота RENDER, VERCEL, RAILWAY, PYTHONANYWHERE. HEROKU все?
Обратите внимание на методы getBotUsername() и getBotToken. В них мы берем токен и ник бота из переменных окружения. Heroku позволяет хранить в закрытом доступе необходимые вам переменные. Но об этом позже.
Далее необходимо создать 2 файла: Procfile (без расширения) и system.properties. Первый нужен, чтобы дать heroku понять, что запускать, а второй — чем запускать. В моем случае это будет выглядеть так:
Как сделать телеграм бота + выложить на бесплатный хостинг с телефона
Procfile:
bot : java — jar build / libs / example_telegram_bot — 1.0 — all . jar
system.properties:
java . runtime . version = 10 . 0 . 2
log — level : ERROR
— com . senderman . examplebot . ExampleBot
Источник: annimon.com
Хостинг для Telegram бота
Пользовательское соглашение: мы не являемся официальными представителями компаний ниже и все ссылки ведут на сторонние ресурсы. Перед покупкой, оплатой и заказом вы обязуете себя самостоятельно проверить всю информацию. Весь текст, описание, фото, ссылки могут быть недостоверные. Для хостинга бота в телеграме мы рекомендуем выделенный VPS сервер. Не стоит покупать сервер из России и стран, в которых мессенджер заблокирован.
8.81 1. Shneider Host
Тестовый период: 7 дней
Хостинг сайта: от 110 рублей в месяц
VPS: от 264 рублей в месяц
Выделенный сервер: от 5434 рублей в месяц
Перейти shneider-host.ru
Хостинги / 2 547 / 1
8.46 2. Sprinthost
Тестовый период: 30 дней (по промокоду)
Хостинг: от 133 рублей в месяц
VDS/VPS: от 400 рублей в месяц
Выделенный сервер: 5300 рублей в месяц
Перейти sprinthost.ru
Промокод: UTP12-1TY9Y-B60AJ
Месяц бесплатного использования хостинга.
Хостинги / 4 063 / 0
9.7 3. Friend Hosting. Высокий аптайм!
Украинские, Болгарские впс: от 4.99$ в месяц.
США: от 5.99$ в месяц.
Перейти friendhosting.net
Хостинги / 1 704 / 0
9.44 4. Fozzy. Быстрее быстрого!
Тестовый период: 7 дней бесплатно
Виртуальный хостинг: 120 рублей в месяц
VPS: 299 рублей в месяц
FOREX VPS: 799 рублей в месяц
Перейти fozzy.com
Промокод: extra_10
Даёт скидку 10% на все тарифы.
Хостинги / 3 380 / 1
9.75 5. WebHOST1
Тестовый период: 30 дней
Хостинг: от 120 рублей в месяц
VDS SSD: от 600 рублей в месяц
Выделенный сервер: от 9000 рублей в месяц
Перейти webhost1.ru
Промокод: f4e9a0-10
Скидка 10% на первый заказ
Хостинги / 1 817 / 0
9.92 6. Mchost. Регулярные акции!
Стоимость: от 59 рублей в месяц
Перейти mchost.ru
Промокод: 1313751747
Хостинги / 2 522 / 0
9.63 7. Simple Cloud
Тестовый период: 100 рублей на баланс
VPS: от 150 рублей в месяц
Перейти simplecloud.ru
Промокод: (регистрация по ссылке)
100 рублей на тестирование
Хостинги / 1 513 / 0
9.75 8. Hostpro
Тестовый период: до 5 дней
Хостинг: от 120 рублей в месяц
VPS: от 675 рублей в месяц
Выделенный сервер: от 3900 рублей в месяц
Перейти hostpro.ua
Промокод: for24_hosting — для хостинга / for24_vps — для VPS
Скидка 10% на хостинг и VPS. Действуют разные купоны.
Хостинги / 1 842 / 0
8.38 9. Hostland. Увеличивает скорость загрузки сайта!
Тестовый период: 30 дней
Хостинг: от 97 рублей в месяц
VPS: от 249 рублей в месяц
Перейти hostland.ru
Хостинги / 860 / 0
10 10. RuVDS
RuVDS — это крупный хостинг не только игровых серверов, но и VPS и VDS серверов в общем. Компания располагает оборудованием в двух дата-центрах Москвы, а также заграницей, в Швейцарии и
Перейти ruvds.com
Промокод: Список находится чуть ниже.
Скидка 5% на оплату сервера
Источник: for24.ru
Бесплатный хостинг Telegram-бота на Google Cloud Platform
При написание телеграмм ботов столкнулся с вопросом, как быстро и бесплатно сделать так, чтобы бот работал постоянно. Варианты с 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
- Настройка Linux
- Python
- Программирование
- API
- Google Cloud Platform
Источник: h.amazingsoftworks.com