> For the complete documentation index, see [llms.txt](https://book.konstantinsecurity.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.konstantinsecurity.com/readme/architect/bots/telegram/kak-khostit-telegram-bota-i-drugie-skripty-na-pyt.md).

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

<https://habr.com/ru/articles/709314/>

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

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

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

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

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

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

![](/files/f9jmYmVcRhldKmJeXCuX)

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

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

![](/files/mYpA8hSbJhzol3WYyHw8)

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

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

![](/files/AIwPO4K40pBhNTrktu1m)

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

В этом случае при запуске никаких дополнительных действий для установки не потребуется

```
import os
from background import keep_alive #импорт функции для поддержки работоспособности
import pip
pip.main(['install', 'pytelegrambotapi'])
import telebot
import time

bot = telebot.TeleBot('СЮДА ВСТАВЬТЕ ВАШ ТОКЕН')

@bot.message_handler(content_types=['text'])
def get_text_message(message):
  bot.send_message(message.from_user.id,message.text)
# echo-функция, которая отвечает на любое текстовое сообщение таким же текстом

keep_alive()#запускаем flask-сервер в отдельном потоке. Подробнее ниже...
bot.polling(non_stop=True, interval=0) #запуск бота
```

## Шаг 3 - Создаем Flask-сервер

Создаем в проекте еще один файл `background.py` В нем будет запущен Flask-сервер, который будет принимать запросы от сервиса мониторинга и использоваться для поддержания работоспособности скрипта на ReplIt.

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

Все дело в том, что в бесплатном режиме запущенный скрипт на Replit будет остановлен спустя некоторое время (10-30 мин) после закрытия вкладки браузера.

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

```
from flask import Flask
from flask import request
from threading import Thread
import time
import requests

app = Flask('')

@app.route('/')
def home():
  return "I'm alive"

def run():
  app.run(host='0.0.0.0', port=80)

def keep_alive():
  t = Thread(target=run)
  t.start()

```

Важно, что сервер запускается в файле не напрямую, а в отдельном потоке `t = Thread(target=run).` Это обеспечит возможность одновременной работы Flask-сервера и телеграм-бота.

![](/files/Zz8uMAwIAnluzmYiaQfk)

Запуск Flask-сервера

После запуска в верхнем правом углу появилась ссылка **(она потребуется чуть позже)** по которой можно увидеть результат работы Flask-сервера (в нашем случае сообщение I'm alive).

На этом этапе у нас работает эхо-телеграм-бот и веб-сервер, доступный из вне по адресу вида: \_**YOUR\_REPL.your\_nickname.repl.co**\_Однако, спустя 10-30 минут после закрытия вкладки браузера скрипт будет остановлен. Вся хитрость в том, что если "кто-то" будет периодически открывать ссылку, ведущую на страницу нашего веб сервера скрипты будут продолжать работать бесконечно долго.

## Шаг 4 - настраиваем службу мониторинга

Для того, чтобы скрипт работал постоянно, воспользуемся сервисом [UpTimerRobot](https://uptimerobot.com/). Он будет раз в 5 минут создавать запрос к нашему web-серверу и продлевать время его работы. Регистрация не представляет трудности, поэтому перейдем к следующему этапу.

После входа в личный кабинет, создаем новый монитор

![](/files/cAZlsgfIS2s3jxkDO4fh)

Создание монитора в UpTimerRobot

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

![](/files/scQyUBCJ4o8lHJlrR4k3)

Сохраняем монитор и возвращаемся в ReplIt. В консоле сервера видим входящие обращения от службы мониторинга

![](/files/2DjBybLK6YeGUwlRBYQe)

Это значит, что все получилось и наш скрипт будет работать 24/7. Можно работать над ним и развивать проект!

Такие дела! Успехов!
