Python telegram bot hosting

Простой способ развернуть телеграмм бота с Aiogram + Webhook на хостинг

Расскажу самый простой и бесплатный способ развернуть на хостинге телеграмм бота, написанного на aiogram и перевести на webhook. Посмотреть видео версию, которую я выложил, можно на YouTube.

Бот будет работать 24/7 пожизненно.

Без использования VPS, веб-фреймворка django, flask, fastapi. pythonanywhere и heroku.

Краткое содержание действий:

Пункт 1. Сохранить пример к себе, регистрация на хостинге.

Пункт 2. Через FTP поместить наш файл бота на хостинге.

Пункт 3. Через SSH установить библиотеку aiogram.

Пункт 4. Настроить сервис бота на хостинге.

Пункт 5. Настроить веб-сайт на переадресацию всех запросов на сервис бота.

Пункт 6. Отредактировать файл запуска бота с учетом наших настроек.

Пункт 7. Перезапуск сервиса бота, проверка бота. Просмотр логов.

Пункт 1. Сохранить пример к себе, регистрация на хостинге.

Идем на страницу официальной документации Aiogram:

Копируем содержимое webhook_example.py к себе в файл webhook.py и сохраняем.

рис.. 1

Регистрируемся на хостинге: https://www.alwaysdata.com/ на бесплатном тарифе «Free for life».

рис. 2

После регистрации, в панели управления, жмем слева в разделе «WEB» → «Sites». Справа увидим наш сайт с доменным именем 3-его уровня.

У меня «rupyt.alwaysdata.net», где rupyt — имя которое я давал при регистрации, у Вас будет своё.

прим. Везде где будет написано «rupyt», меняем на своё имя.

рис. 3

Пункт 2. Через FTP поместить наш файл бота на хостинге.

Подключаемся по FTP к хостингу любым вашим FTP-клиентом.

рис. 4

Еще раз напомню, вместо rupyt, ставим свое имя, которое вы указывали при регистрации.

Адрес хоста для подключения можно посмотреть, если нажать в панели управления хостингом, слева «Remote access» → «FTP»:

рис. 5

После подключения попадаем в домашнюю папку.

В ней имеется папка «www» для веб-сайтов.

Заходим в нее, создаём папку «bot»

Копируем наш пример webhook.py на хостинг в эту папку:

рис. 6

Пункт 3. Через SSH установить библиотеку aiogram.

Для подключения по SSH, необходимо настроить доступ для него.

Идем в панель управления «Remote access» → «SSH», жмем на «шестеренку» справа, для редактирования:

рис. 7

Ставим галку на «Enable password login» для входа по паролю. Сохраняемся, жмем «Submit»:

рис. 8

Подключиться можно двумя способами.

рис. 9

Второй способ прямо в браузере, нажав на «(also Web accessible)».

рис. 10

Вводим логин (у меня rupyt) и пароль.

Здесь можно посмотреть домашний каталог (команда pwd), перейти в каталог «www/bot» и файл «webhook.py», который мы скопировали по FTP.

Читайте также:  Vs code нет подсветки php

Установим «Aiogram», набрав «pip install aiogram».

Посмотреть установленные библиотеки можно командой «pip freeze».

рис. 11

Пункт 4. Настроить сервис бота на хостинге.

Идем в панель управления «Advanced» → «Services», жмем на «+Add a service»:

рис. 12

2. В «Command» пишем команду запуска файла бота нашего примера «webhook.py»:

3. В «Environment» запишем токен телеграм бота, без кавычек TG_TOKEN=62671….

4. В «Working directory» укажем путь где лежит наш файл «webhook.py»:

5. В «Annotation» дадим любое названия для сервиса, я дал «Aiogram Webhook service».

рис. 13

6. Сохраняемся, жмем «Submit»

Пункт 5. Настроить сайт на переадресацию всех запросов на сервис бота.

Идем в панель управления «Web» → «Sites», жмем на шестеренку «Edit» для редактирования нашего сайта:

рис. 14

рис. 16

2. «Addresses» — не трогаем, это и есть Ваш адрес веб-сайта. У меня «rupyt.alwaysdata.net».

3. В «Configuration» «Type*» выбираем «Redirect».

4. В «Destination URL*» прописываем адрес на котором работает наш сервис бота.

Где «services» — означает, что это сервис, «rupyt» — мое имя, «8350» — порт который необходимо выбрать из диапазона 8300-8499, как сказано в документации.

рис. 15

5. В «Forwarding type*» выбираем тип: «transparent(reverse proxy)».

6. Ставим галочку на «Append request path» для того, что бы пути передавались в адрес назначения, то есть в сервис бота.

7. В «Annotation» дадим любое описания, я дал «Redirect For Bot».

8. Идем во вкладку «SSL» и ставим галочку для HTTPS «Force HTTPS usage»:

рис. 17

Пункт 6. Отредактировать файл запуска бота с учетом наших настроек.

На хостинге через FTP, откроем наш скопированный файл «webhook.py» и отредактируем.

рис. 18

1. Импортируем модуль «OS» для загрузки токена через окружения.

2. Укажем загрузку токена через окружения «API_TOKEN = os.environ[‘TG_TOKEN’]», который мы сохраняли в настройках сервиса , смотри Рис.13.

3. Для WEBHOOK_HOST укажем наш адрес вебсайта:

4. Путь я указал «WEBHOOK_PATH = ‘/bot/’», можно оставить пустым в кавычках ».

5. WEBAPP_HOST = ‘::’ , указываем два двоеточия, как сказано в документации (Смотри Рис. 15.), что сервис может быть запущен, только на IP версии 6.

6. WEBAPP_PORT = 8350 , выбрали из диапазона 8300-8499, указали в настройках «Sites» смотри Рис. 16.

Пункт 7. Перезапуск сервиса бота, проверка бота. Просмотр логов.

Идем в панель управления «Advanced» → «Services», жмем на «Restart»:

рис. 19

Запускаем телеграмм клиента, и введем что-нибудь. Видим что бот отвечает «эхом». Ура!

Можно посмотреть логи для сайта или сервиса.

Для сервиса идем в панель управления «Advanced» → «Services», жмем на «Logs»:

рис. 20

— запуск сервиса на IPv6 «::» и порту 8350

— команду запуска, которую указали для сервиса.

— имя бота и удачный запуск его.

— POST запрос по path «/bot/», c удачным status_code = 200.

Настройка закончена .

Для перевода своего бота с polling-ом на вебхук, достаточно скопировать хендлеры функции в наш файл webhook.py на хостинге:

рис. 21

Надеюсь кому-то поможет. Всем удачи! )

Источник

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

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

Читайте также:  Simple Mail

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

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

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

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

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

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

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

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

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

Тут стоит обратить на установку модуля 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-сервера и телеграм-бота.

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

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

На этом этапе у нас работает эхо-телеграм-бот и веб-сервер, доступный из вне по адресу вида: YOUR_REPL.your_nickname.repl.co
Однако, спустя 10-30 минут после закрытия вкладки браузера скрипт будет остановлен. Вся хитрость в том, что если «кто-то» будет периодически открывать ссылку, ведущую на страницу нашего веб сервера скрипты будут продолжать работать бесконечно долго.

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

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

Читайте также:  Sorting tuple lists python

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

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

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

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

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

Источник

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

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

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

  1. Heroku — облако, идеально подходящее для размещения телеграм-ботов и Discord-ботов. Есть совсем недорогие тарифы (ранее был бесплатный, но его недавно убрали). Единственным препятствием является необходимость оплаты картой иностранного банка.
  2. Amvera Cloud — российский аналог Heroku. Как и в Heroku, есть возможность развертывать приложения в контейнерах и обновлять их через push в GIT. Сейчас там идет полностью бесплатный бета-тест, который продлится еще некоторое время. Кроме того, при регистрации будет начислено 1000 руб., которых хватит на несколько месяцев бесплатного использования после окончания бета-теста.
  3. Pythonanywhere. Сервис заточен на хостинг проектов на Python. Однако на бесплатном тарифе нельзя использовать pyTelegramApi, что затрудняет развертывание на нем именно Telegram-ботов.

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

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

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

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

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

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

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

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

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

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

Итого

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

Источник

Оцените статью