Как разместить Telegram-бота на хостинге
На этой странице
Telegram-бот отвечает только пока работает его код. Запустите его на ноутбуке — и он замолчит, как только ноутбук уйдёт в сон. Поэтому рано или поздно любому боту нужно место, которое всегда включено.
В этом гайде весь путь: создание бота через BotFather, выбор между polling и webhook, рабочий пример на Python и на JavaScript, лимиты и правила Telegram и как держать бота онлайн 24/7.
Шаг 1: создайте бота в BotFather
- В Telegram откройте @BotFather и отправьте
/newbot. - Задайте боту отображаемое имя, затем username: от 5 до 32 символов, латинские буквы, цифры и подчёркивания, в конце —
bot, напримерmy_shop_helper_bot. - BotFather пришлёт токен вида
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. У кого токен — тот управляет ботом, поэтому не храните его в коде и никому не передавайте. Если он утёк, отправьте BotFather команду/tokenи получите новый.
Ещё две полезные команды BotFather: /setcommands задаёт список команд, который пользователи видят при вводе /, а /setprivacy определяет, что бот видит в группах. По умолчанию режим приватности включён, и в группе бот получает только адресованные ему команды и ответы на свои сообщения — если вы не сделаете его администратором.
Polling или webhook?
Бот получает сообщения от Telegram одним из двух способов — и никогда обоими одновременно:
| Long polling | Webhook | |
|---|---|---|
| Как работает | Бот постоянно спрашивает у Telegram новые сообщения через одно открытое соединение | Telegram отправляет каждое обновление на ваш HTTPS-адрес |
| Что нужно | Только исходящий доступ в интернет | Домен, действительный сертификат и порт 443, 80, 88 или 8443 |
| Подходит для | Почти любого бота, и проще всего в размещении | Очень нагруженных ботов или serverless-платформ |
Начните с polling. Ему не нужны домен, сертификат и открытый порт, и его поддерживают все библиотеки. Если на токене когда-либо был установлен webhook, сначала вызовите deleteWebhook — пока webhook активен, polling не работает.
Боты на polling работают на хостинге ботов HytHost без домена и открытых портов — Python или Node.js от €0.89/мес.
Тарифы хостинга ботовШаг 2a: бот на Python (python-telegram-bot)
python-telegram-bot 22 требует Python 3.10 или новее. Установите его командой pip install python-telegram-bot и создайте bot.py:
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Hi! Send me a message and I will echo it.")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text(update.message.text)
def main() -> None:
application = Application.builder().token(os.environ["TELEGRAM_TOKEN"]).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
application.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()
aiogram 3 — второй популярный вариант на Python, тоже для Python 3.10 или новее.
Шаг 2b: бот на JavaScript (grammY)
grammY — активно поддерживаемый фреймворк для Telegram на Node.js. Выполните npm install grammy и создайте bot.js:
const { Bot } = require("grammy");
const bot = new Bot(process.env.TELEGRAM_TOKEN);
bot.command("start", (ctx) => ctx.reply("Welcome! Up and running."));
bot.on("message:text", (ctx) => ctx.reply(ctx.message.text));
process.once("SIGINT", () => bot.stop());
process.once("SIGTERM", () => bot.stop());
bot.start();
В старых туториалах используется Telegraf, у которого не было релизов с февраля 2024 года; для нового бота grammY — более надёжный выбор.
Лимиты и правила Telegram для ботов
Лимиты из FAQ Telegram по ботам:
- Примерно одно сообщение в секунду в одном чате, 20 сообщений в минуту в группе и около 30 сообщений в секунду в целом.
- Файлы: бот может отправлять до 50 MB и скачивать до 20 MB.
- Опрашивать Telegram может только одна копия бота одновременно. Вторая получит Conflict: terminated by other getUpdates request — для тестов используйте отдельный токен.
Правила: условия Telegram для разработчиков ботов запрещают спам, непрошеные сообщения и обход лимитов. Боту нужна политика конфиденциальности (если своей нет, действует стандартная от Telegram), и он обязан удалять данные пользователя по запросу. Автоматизация личного аккаунта вместо бота — так называемый юзербот — совсем другое дело, и Telegram блокирует аккаунты, используемые для флуда или спама.
Хостинг Telegram-ботов в HytHost
На наших тарифах хостинга ботов работают и Telegram-боты, и Discord-боты:
- Выберите тариф и среду выполнения — Python для python-telegram-bot или aiogram, Node.js для grammY. Во вкладке Startup выберите Python 3.10 или новее либо актуальную версию Node.js.
- Загрузите код через файловый менеджер или SFTP вместе с
requirements.txtилиpackage.json. - Поместите токен в файл
.envили в переменную окружения, а не в код. - Запустите бота. При polling боту не нужны домен и открытый порт; если он упадёт, панель его перезапустит.
Что разрешают наши правила: ботов на официальном Bot API с токеном от BotFather. Запрещены: юзерботы, автоматизирующие личный аккаунт, непрошеные массовые рассылки, сбор данных пользователей или групп и боты, которые скачивают и распространяют медиа без прав на них. Бот, нарушающий эти правила, блокируется.
В тарифы входят база данных MySQL и резервные копии. Делаете ещё и Discord-бота? Смотрите гайд как сделать Discord-бота.
Держите Telegram-бота онлайн 24/7 без своего ПК: хостинг ботов на Python или Node.js от €0.89/мес., перезапуски включены.
Тарифы хостинга ботовЧастые вопросы
Можно бесплатно запустить его на своём компьютере, но он будет уходить в офлайн каждый раз, когда компьютер засыпает или перезагружается. Бесплатные облачные тарифы часто приостанавливают неактивные приложения или ограничивают их использование. Для бота, который всегда онлайн, надёжный вариант — небольшой платный хостинг.
Polling — почти для любого бота: ему не нужны домен, сертификат и открытый порт. Webhook подходит для очень нагруженных ботов или serverless-платформ и требует HTTPS на порту 443, 80, 88 или 8443. Один токен не может использовать оба способа одновременно.
Отправьте /token в @BotFather и выберите бота, чтобы получить новый токен, затем обновите его везде, где работает бот. Храните токен в переменной окружения или в файле .env, но никогда в коде, которым вы делитесь.
Две копии бота опрашивают Telegram с одним и тем же токеном — например, одна на вашем ПК, другая на сервере. Остановите одну из них, а для тестов используйте отдельного бота и токен.
Совсем немного. Типичному боту на Python или Node.js, который отвечает на команды, обычно хватает 512 MB; ботам, которые обрабатывают изображения или держат в памяти много данных, нужно больше.
Ваш Telegram-бот онлайн 24/7
Хостинг ботов HytHost запускает вашего Telegram-бота на Python или Node.js с автоматическими перезапусками, базой данных MySQL и резервными копиями — от €0.89/мес.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursЭтот гайд был полезен?