NetrunНа главную

Как выложить бота ВКонтакте без своего сервера

· 5 мин чтения

Бот для сообщества ВКонтакте пишется довольно быстро: библиотека вроде vkbottle или vk_api, токен сообщества, обработчик сообщений. А вот дальше начинается знакомая история — бот отвечает, только пока у вас открыт терминал. Закрыли ноутбук, ушёл в сон или пропал интернет — и подписчики пишут в пустоту. Обычный ответ на это: арендовать сервер, поставить туда Python, настроить автозапуск и следить, чтобы процесс поднимался после перезагрузки.

Всего этого можно не делать. Netrun принимает код, сам определяет язык, ставит зависимости, запускает бота на своих серверах и поднимает его обратно, если он упал. Разберём по шагам — и честно о том, где проходит граница бесплатного тарифа.

  1. Получите токен сообщества

    В управлении сообществом включите сообщения и работу с ботами, а затем создайте ключ доступа с правами на сообщения. Этот ключ и есть токен, по которому бот будет получать сообщения и отвечать от имени сообщества. Держите его при себе: по нему можно писать от имени вашего сообщества.

  2. Вынесите токен из кода

    Читайте токен из переменной окружения, а не из строки в коде. Так он не попадёт ни в архив, ни в репозиторий. При настройке проекта Netrun спросит его значение и подставит в окружение в зашифрованном виде.

  3. Соберите зависимости

    Положите рядом с кодом файл requirements.txt со списком библиотек — vkbottle, vk_api или что вы используете. По нему мы поймём, что это Python-проект, и поставим всё нужное при сборке. Виртуальное окружение в архив класть не нужно.

  4. Загрузите код и запустите бота

    Загрузите папку ZIP-архивом или импортируйте репозиторий из GitHub, в том числе приватный. Netrun соберёт проект и запустит бота, а логи будут видны в кабинете в реальном времени — по ним сразу видно, подключился ли бот к ВКонтакте и не падает ли он на ошибке. После этого компьютер можно выключать.

  5. Учтите ограничение бесплатного тарифа

    Бот, который сам ждёт сообщений, на бесплатном тарифе работает три дня, а затем выключается — за сутки придёт предупреждение, код и токен при этом сохраняются. Трёх дней достаточно, чтобы проверить, что всё собралось и отвечает. Для постоянной работы нужен тариф Pro. Причина простая: сайт умеет засыпать в простое и просыпаться по открытой ссылке, а бот занят всё время и разбудить его нечем — его непрерывная работа и есть то, за что вы платите.

Чтобы бот сообщества отвечал круглосуточно, не нужен ни включённый ноутбук, ни арендованный сервер с автозапуском. Загрузите код, укажите токен сообщества — и бот останется онлайн, даже когда ваш компьютер выключен. Попробовать Netrun.

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

Что нужно, кроме кода бота?

Только токен сообщества с правами на сообщения и файл requirements.txt со списком библиотек. Сервер, установка Python, настройка автозапуска и обслуживание системы не требуются.

Будет ли бот работать, когда компьютер выключен?

Да. Бот запускается на наших серверах и не зависит от вашего компьютера. Если он упадёт с ошибкой, платформа перезапустит его сама, а причину будет видно в логах в кабинете.

Можно ли держать бота на бесплатном тарифе постоянно?

Нет. Бот, который сам ждёт сообщений, на бесплатном тарифе работает три дня и выключается — код и настройки при этом сохраняются. Для круглосуточной работы нужен тариф Pro. Бесплатно и без ограничения по сроку на Netrun живут сайты: они засыпают в простое и просыпаются по открытой ссылке.

Подойдёт ли способ для бота на Callback API?

Да. Бот на Callback API — это обычное веб-приложение, которое принимает запросы от ВКонтакте, поэтому ему нужен публичный адрес с защищённым соединением. Netrun выдаёт такой адрес сразу после публикации, его и указываете в настройках сообщества. Приложение при этом должно слушать порт из переменной окружения, а не прописанный в коде.

Безопасно ли хранить у вас токен сообщества?

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

Можно ли запустить проект на Python — Django, Flask или FastAPI?

Да. Положите зависимости в requirements.txt — Netrun определит Python и соберёт проект сам. Django, Flask и FastAPI поддерживаются; приложение должно слушать порт из переменной окружения, а ключи и доступ к базе задаются как секреты, а не в коде.

Что будет с ботом через 3 дня на бесплатном тарифе?

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

Где указать токены и другие секретные значения?

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