НОВОЕ 📢 Ограниченное стартовое предложение: скидка до 70% на первый месяц для любой игры!Посмотреть тарифы

Как запустить Telegram-бота на хостинге

Хостинг Discord-ботовUpdated Oct 29, 20268 min read

Чтобы запустить Telegram-бота 24/7, разместите его на сервере, который всегда включён, а не на своём компьютере: создайте бота в @BotFather, закажите тариф для ботов под Telegram, вставьте токен на странице «Бот» и запустите код. На тарифе для ботов PlayNHost (от US$1.99 в месяц) панель проверяет токен в Telegram, передаёт его вашему коду под именами, которые используют большинство библиотек, и предлагает готового стартового бота на Python или Node.js, если кода у вас ещё нет. Шаги:

  1. В Telegram откройте @BotFather, отправьте /newbot, выберите имя и username, оканчивающийся на bot, и скопируйте выданный токен.
  2. На странице Хостинг Telegram-ботов нажмите Создать сервер на нужном тарифе. В окне заказа ответьте на вопрос Для какой платформы ваш бот?, выбрав Telegram, и укажите язык, на котором написан ваш бот.
  3. Откройте сервер в панели. В карточке Настройка бота на странице Обзор проверьте пункт Что запускается и нажмите Продолжить.
  4. На шаге Подключение к Telegram вставьте токен и нажмите Подключить. Проверьте показанное имя бота и нажмите Да, продолжить.
  5. На шаге Ваш код нажмите Создать стартового бота или загрузите свои файлы, либо подключите Git.
  6. Нажмите Запустить бота и дождитесь сообщения Ваш бот онлайн в Telegram. Отправьте ему /start, чтобы попробовать.
  7. На странице Бот, в разделе Telegram, нажмите Открыть в Telegram и отправьте боту /start.

Каждый шаг подробно описан ниже.

1. Создайте бота в @BotFather

  1. В Telegram найдите @BotFather и откройте чат с ним.
  2. Отправьте /newbot. @BotFather спросит имя, которое люди видят в чатах, а затем username. Username должен оканчиваться на bot, например tetris_bot или TetrisBot.
  3. @BotFather ответит токеном, строкой вроде 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Скопируйте её. Тот, у кого есть токен, управляет вашим ботом, поэтому не передавайте его никому и не вставляйте в свой код.

Потеряли токен? В @BotFather отправьте /mybots, выберите своего бота, затем API Token.

2. Закажите тариф для Telegram

Любой тариф, начиная со STARTER (0,5 ГБ), запускает Telegram-бота. Нажмите Создать сервер на нужном тарифе. В окне заказа на вопрос Для какой платформы ваш бот? выберите Telegram. Затем укажите язык своего бота: Node.js, Python, Java, C# (.NET), Bun, Deno, Go или Rust. Не знаете, какой тариф нужен? В статье python-telegram-bot и aiogram на PlayNHost есть память, которую мы измерили для каждой библиотеки.

Окно заказа тарифа STARTER, шаг 1 из 2: Для какой платформы ваш бот? с выбранным Telegram и восемь плиток языков Node.js, Python, Java, C# (.NET), Bun, Deno, Go и Rust.

Уже есть тариф для ботов, настроенный для Discord? Новый не нужен. На странице Бот, в разделе Discord, найдите карточку Для чего этот бот?, выберите Telegram и подтвердите кнопкой Переключить. Ничего не удаляется: токен Discord остаётся сохранённым и вернётся, если вы переключитесь обратно. Если вы уже сохранили токен в Окружение как TELEGRAM_BOT_TOKEN, он становится токеном Telegram, и вставлять его заново не нужно.

3. Вставьте токен

Откройте сервер в панели. Карточка Настройка бота на странице Обзор проведёт вас через три шага: Что запускается, Подключение к Telegram и Ваш код.

  1. Что запускается показывает язык вашего сервера, например Этот бот запускает Python Bot. Нажмите Продолжить или Изменить, что запускается, если выбран не тот.
  2. Подключение к Telegram: вставьте токен в поле Вставьте токен бота и нажмите Подключить. Панель покажет Проверяем в Telegram..., а затем имя и @username вашего бота с вопросом Это ваш бот?. Нажмите Да, продолжить.

Токен можно вставить и на странице Бот, в разделе Telegram, в поле Токен. Токен, который Telegram отклонил, не сохраняется: вы увидите Telegram не принял этот токен. Скопируйте его из @BotFather заново.

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

ИмяКто использует
TELEGRAM_BOT_TOKENНаши стартовые боты
BOT_TOKENПримеры aiogram, Telegraf и node-telegram-bot-api
TOKENЗаглушка в примерах python-telegram-bot и pyTelegramBotAPI
TELEGRAM_TOKENЧасто встречается в руководствах
TELOXIDE_TOKENteloxide (Rust), читается через Bot::from_env()

В Python читайте его через os.environ["TELEGRAM_BOT_TOKEN"], в Node.js через process.env.TELEGRAM_BOT_TOKEN.

4. Добавьте свой код

На шаге Ваш код карточка предлагает то, что подходит вашему серверу:

  • Создать стартового бота (для серверов Node.js и Python, где ещё нет кода): небольшой рабочий бот, который отвечает на /start. На Python он создаёт bot.py и requirements.txt с python-telegram-bot 22, на Node.js создаёт index.js и package.json с grammY. Файл запуска он задаёт сам. Измените бота как хотите и перезапустите.
  • Загрузить файлы: ваш собственный бот вместе с requirements.txt или package.json. Не загружайте venv, .venv, __pycache__ и node_modules. См. Как загрузить код вашего бота.
  • Подключить Git: ваш код из Git-репозитория. См. Как развернуть и обновлять бота из GitHub.

Ваш код должен использовать long polling: run_polling() в python-telegram-bot, start_polling() в aiogram, bot.start() в grammY или launch() в Telegraf. Для вебхуков нужен публичный HTTPS-адрес, которого в этих тарифах пока нет. Если вы переносите бота, работавшего на вебхуке, читайте Как перенести Telegram-бота на PlayNHost.

5. Запустите бота

Нажмите Запустить бота в карточке или кнопку Запустить и откройте Console. На Python, Node.js и Bun сервер сначала устанавливает ваши пакеты, поэтому первый запуск дольше: пакеты скачиваются. Потом они устанавливаются заново, только когда вы их меняете (список пакетов, файл пакетов или версию среды выполнения), когда нет node_modules или раз в сутки. В остальных случаях вы видите:

[PlayNHost] Packages are up to date. They install again when you change them, or after a day.
[PlayNHost] Starting your bot

Затем стартовый бот выводит Logged in as @your_bot. Панель читает эту строку: метка на странице Обзор меняется на Онлайн в Telegram. В своём коде выводите похожую строку, когда бот готов.

6. Откройте бота в Telegram

На странице Бот, в разделе Telegram, нажмите Открыть в Telegram. Откроется ссылка t.me вашего бота. Отправьте /start: стартовый бот ответит Hello с вашим именем и Your bot is running on PlayNHost.

В том же разделе показаны @username и id бота, а также карточка В группах с тем, что Telegram разрешает боту в групповых чатах.

Раздел Telegram на странице Бот: токен проверен и Действителен, имя бота и @playnhost_demo_bot, ссылка Открыть в Telegram и карточка В группах с включённой приватностью.

Если бот не отвечает

Панель читает консоль и показывает над ней баннер с причиной и кнопкой, которая её устраняет:

  • Telegram не принял токен вашего бота: токен отозван в @BotFather или скопирован неверно. Нажмите Заменить токен.
  • Ваш бот работает ещё и в другом месте: другая копия использует тот же токен, часто на вашем компьютере или на старом хостинге.
  • Для вашего бота задан вебхук: нажмите Удалить вебхук.

В этих случаях некоторые библиотеки продолжают повторять попытки, поэтому бот выглядит работающим, хотя никто не отвечает: баннер помогает это заметить. Подробнее: Как исправить ошибку 409 Conflict у Telegram-бота.

Частые вопросы

Останется ли бот онлайн, если я выключу компьютер?

Да. Он работает на сервере, а не на вашем компьютере и не в браузере. Если бот упадёт, он будет запущен снова примерно через минуту; если он упадёт снова в течение минуты после этого, он останется остановленным, а Console покажет причину.

Можно ли использовать вебхук вместо polling?

Пока нет. Для вебхука нужен публичный HTTPS-адрес, которого в этих тарифах пока нет. Polling адреса не требует: бот сам спрашивает у Telegram новые сообщения. Если для бота задан вебхук, раздел Telegram показывает его с кнопкой Удалить вебхук, которая сохраняет ожидающие сообщения.

Можно ли запускать того же бота на компьютере во время тестов?

С тем же токеном одновременно нельзя. Telegram позволяет одной копии бота запрашивать сообщения, поэтому вторая получит 409 Conflict. Остановите копию на компьютере или создайте второго бота в @BotFather для тестов.

Почему бот не видит сообщения в группе?

Режим приватности Telegram по умолчанию включён: в группах бот видит адресованные ему команды и ответы на его сообщения, но не каждое сообщение, если только он не администратор группы. Карточка В группах показывает Приватность включена или Приватность выключена. Чтобы читать каждое сообщение, отправьте @BotFather команду /setprivacy, выключите режим, затем удалите бота из группы и добавьте его снова.

Какой тариф мне нужен?

STARTER (0,5 ГБ) запускает бота на python-telegram-bot, aiogram, grammY или Telegraf, и ещё остаётся место для вашего кода. Выбирайте 1 ГБ или больше, если бот хранит данные в памяти, работает с файлами или изображениями либо запускает несколько ботов в одном процессе. Тарифы смотрите на странице Хостинг Telegram-ботов.

Ваш бот уже у другого хостинга? Перенесите его к нам

ПОСЛЕДНИЕ БЛОГИ