Боты

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

Как запустить своего бота Telegram или Discord: заказ сервера с готовым шаблоном, загрузка кода файловым менеджером, токен от BotFather и первая строка в консоли.

Здесь по шагам показано, как поднять на хостинге своего бота Telegram или Discord — от заказа сервера до первой строки, которую бот напечатает в консоли. ⏱️ Весь путь занимает минут пятнадцать, и большая часть этого времени уходит на установку, в которой от вас ничего не требуется.

Бот здесь — это обычный проект на Python или на Node.js, тот же самый, что запускался у вас на компьютере. Ни собирать его во что-то особенное, ни переписывать под нас не нужно: панель запускает файл интерпретатором, ровно как это делаете вы у себя в терминале.

Что приготовить заранее

  • Код бота. Один файл или целый проект с папками — неважно, лишь бы он запускался у вас одной командой.
  • Токен. Строка, которую выдаёт @BotFather прямо в Telegram; у Discord её выдаёт портал разработчика. Без токена бот запустится, но ни к одной платформе не подключится.
  • Список библиотек — requirements.txt у Python, package.json у Node.js. Файла нет — библиотеки не поставятся, и бот упадёт на первой же строке import.

Заказ сервера

  1. Создать сервер

    Направление — «Игровой сервер»

    Отдельного направления под ботов нет, и это не недоделка. Бот живёт на той же игровой ноде, под тем же присмотром, с тем же файловым менеджером и теми же бэкапами, что сервер Minecraft. Направление «VPS» берут в другом случае — когда нужна вся система целиком.

  2. Во что играем

    Возьмите карточку «Бот»

    Она стоит в конце ряда — не потому, что хуже, а потому, что шаг называется «Во что играем», а в бота не играют. Следом откроется шаг «Язык бота» с двумя строками: «Python» и «Node.js». Выбирают по своему коду: в контейнере стоит Python 3.12 или Node.js 22.

  3. Сколько нужно мощности

    Выберите тариф и период

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

  4. Настройки бота

    Заполните четыре поля

    Шаг так и называется — «Настройки бота», потому что мира у него нет. Полей четыре: «Платформа», «Токен бота», «Файл запуска» и «Ставить зависимости при запуске». Разбор каждого — ниже; все четыре меняются и потом, во вкладке «Настройки игры».

  5. Где поставим · Как назовём

    Выберите город и имя

    Город влияет на задержку до платформы, и для бота она почти всегда безразлична: он не держит игроков, а ждёт сообщений. Имя — только для вас, в панели по нему находят сервер.

Что лежит в каталоге сразу после установки

Установка не приносит кода бота — его выкладываете вы. Она готовит каталог и оставляет заготовку: bot.py у Python, index.js у Node.js. В консоли при этом появляются строки «Заготовка bot.py создана» и «Установка завершена».

Заготовка не притворяется работающим ботом. Она печатает две строки — что каталог пуст и что точку входа задаёт настройка «Файл запуска», — а дальше просто ждёт. Поэтому сервер сразу после заказа выглядит как работающий сервер с понятным сообщением, а не как бесконечный цикл падений.

Загрузка своего кода

  1. Файлы

    Откройте корень каталога

    Верхняя папка в строке пути называется «Сервер» — это и есть корень каталога сервера. Всё, что описано дальше, происходит именно в нём, и это важнее, чем кажется: стартовая команда выполняется здесь же.

  2. Файлы

    Загрузите архив с проектом

    Нажмите «Загрузить файлы» или перетащите файл прямо в список. Один файл — до 100 МиБ; столько же принимает и нода. Проекты ботов укладываются в этот предел с огромным запасом: node_modules и виртуальное окружение загружать не нужно вовсе, библиотеки поставятся на сервере сами.

  3. Файлы

    Распакуйте его на месте

    Нажмите на строку архива и выберите «Распаковать здесь». Панель принимает .zip, .7z, .rar, .tar, .tar.gz, .tgz, .tar.bz2, .tar.xz и .tar.zst. Распаковка на ноде быстрее, чем загрузка сотни файлов по одному.

  4. Файлы

    Проверьте, что файлы легли в корень

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

  5. Настройки игры

    Укажите файл запуска

    Поле «Файл запуска» должно называть тот файл, который вы запускаете у себя командой. Путь считается от корня каталога сервера: код в папке src — значит, в поле стоит src/main.py. Внизу страницы — «Сохранить настройки».

  6. Шапка сервера

    Перезапустите сервер

    Настройки читаются в момент запуска, поэтому после сохранения панель пишет прямо: «Сервер работает: записанные значения он прочитает при следующем запуске — понадобится перезапуск». Рядом появляется кнопка «Перезапустить сейчас».

Написать в «Файле запуска» полный путь с папкой — my-bot/bot.py — можно, и бот даже стартует. Но библиотек он всё равно не получит: их список ищут в корне, и обойти это настройкой нельзя. Поэтому правильный ответ один — пересобрать архив так, чтобы файл запуска и список библиотек лежали в его корне. В архиватор кладут содержимое папки, а не саму папку.

Четыре настройки бота

Все четыре лежат во вкладке «Настройки игры» — да, у бота она называется так же, как у игрового сервера. По именованным разделам они не разложены, поэтому искать надо по названию поля, в разделе «Прочее».

ПолеЧто делаетПределы
ПлатформаTelegram или Discord. Уходит в окружение, чтобы код мог ветвиться, и решает, на какую выдачу токена панель покажет ссылку. На образ и на команду запуска не влияетдва значения
Токен ботаУходит в контейнер переменной окружения BOT_TOKEN. Хранится запечатанным и обратно в форму не возвращаетсядо 200 знаков, без пробелов и кавычек
Файл запускаЧто именно запускать. Путь считается от корня каталога серверадо 64 знаков; буквы, цифры, точка, подчёркивание, дефис и слэш
Ставить зависимости при запускеСтавить ли библиотеки перед каждым запуском. Выключают, когда они уже лежат рядом и лишняя минута на старте не нужнавключено по умолчанию
Два пути настройки: через стартовую команду значение читается при каждом запуске, через настроечный файл оно попадает на сервер только один раз, при установке
У бота нижнего пути нет вовсе: настроечных файлов панель ему не собирает. «Файл запуска» уходит в стартовую команду, токен — в окружение, и собирается это заново на каждом запуске. Поэтому перезапуска здесь всегда достаточно, а переустановка не нужна.

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

  • [hcp] установка зависимостей — обёртка начала ставить библиотеки. Строки не будет, если список не найден в корне или переключатель выключен.
  • [hcp] запуск бота — библиотеки встали, сейчас запустится ваш код. По этой строке панель и считает сервер запущенным.
  • Дальше идут строки вашего кода — те же, что вы видите у себя в терминале.

Напишите боту

Откройте в Telegram переписку со своим ботом и отправьте /start. Пришёл ответ — всё сделано. Бот молчит, а ошибок в консоли нет — дело почти всегда в коде: не подписан обработчик или запускается не тот файл. Остальные случаи разобраны в статье про то, почему бот не запускается.