VPS для бота ВКонтакте: деплой и работа 24/7
Бот для сообщества ВКонтакте отвечает подписчикам, принимает заявки и рассылает уведомления. Чтобы он работал без выходных, его размещают на VPS. Развернём бота на vkbottle или vk_api с Bots Long Poll и автозапуском через systemd.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Как устроен бот ВКонтакте
Бот ВК работает от имени сообщества через Bots Long Poll API: он держит открытое соединение с серверами ВКонтакте и получает события — новые сообщения, вступления, реакции. В отличие от Callback API, Long Poll не требует внешнего домена и белого IP, что упрощает запуск на любом VPS.
Для работы нужен токен сообщества с правами на сообщения — его выдают в настройках группы, в разделе «Работа с API». Один запущенный экземпляр обслуживает всё сообщество, а нагрузка обычно минимальна: даже активная группа редко упирается в ресурсы младшего тарифа.
- Bots Long Poll — не нужен домен и белый IP.
- Токен сообщества — выдаётся в настройках группы.
- Один процесс на группу — легко масштабировать по сообществам.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для бота ВКонтактеПодготовка сервера
Ставим Python, создаём пользователя и окружение. Популярные библиотеки — vkbottle (асинхронная, современная) и vk_api (классическая, синхронная).
sudo apt update && sudo apt install -y python3 python3-venv git
sudo useradd -r -m -s /bin/bash vkbot
sudo -u vkbot bash -c 'cd ~ && python3 -m venv venv && venv/bin/pip install vkbottle'
# либо классика:
sudo -u vkbot bash -c '~/venv/bin/pip install vk_api'
Токен сообщества кладём в файл окружения с правами 600 — он даёт доступ к переписке группы, поэтому в код и git его не помещаем.
echo 'VK_TOKEN=vk1.a.xxxxx' | sudo -u vkbot tee /home/vkbot/bot.env
sudo chmod 600 /home/vkbot/bot.env
Минимальный бот на vkbottle
Асинхронный каркас на vkbottle: отвечает на любое сообщение. Токен читается из окружения.
import os
from vkbottle.bot import Bot, Message
bot = Bot(os.environ['VK_TOKEN'])
@bot.on.message()
async def handler(m: Message):
await m.answer('Бот сообщества работает на VPS 24/7')
bot.run_forever()
vkbottle сам поднимает Bots Long Poll и переподключается при обрывах. Для vk_api логика похожа, но через VkBotLongPoll и обычный цикл событий.
Автозапуск через systemd
Чтобы бот работал круглосуточно и переживал перезагрузку сервера, оформляем его сервисом systemd.
sudo tee /etc/systemd/system/vkbot.service > /dev/null <<'EOF'
[Unit]
Description=VK community bot
After=network-online.target
Wants=network-online.target
[Service]
User=vkbot
WorkingDirectory=/home/vkbot
EnvironmentFile=/home/vkbot/bot.env
ExecStart=/home/vkbot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now vkbot
systemctl status vkbot
journalctl -u vkbot -f
Теперь бот стартует при загрузке системы, а при ошибке в обработчике systemd поднимет его заново.
Клавиатуры, вложения и рассылки
Бот ВК умеет не только отвечать текстом. Через API можно прикреплять inline-клавиатуры, отправлять фото и документы, вести пользователя по сценарию через состояния. Для рассылок помните про лимит ВКонтакте: сообщения можно слать только тем, кто написал боту сам в последние сутки, иначе нужен отдельный шаблон рассылки.
Чтобы не упереться в rate limit при массовых операциях, добавляйте паузы между запросами и обрабатывайте ошибки 6 (Too many requests) — повторяйте запрос с экспоненциальной задержкой. ВКонтакте ограничивает частоту обращений к API примерно тремя запросами в секунду на токен сообщества, поэтому тяжёлые операции вроде выгрузки участников делайте пачками с задержкой, а не в один поток.
Сервер и частые ошибки
Боту ВК не нужны серьёзные ресурсы — хватает тарифа от $8/мес. Но важна стабильная сеть, чтобы Long Poll не рвался. У MAATRIX это AMD EPYC + NVMe, локации UK, США и РФ, ежедневные бэкапы и оплата картой РФ, СБП, криптой или MAAT — удобно, когда сервер нужен за рубежом, а платить хочется из России.
- Токен в git — доступ к переписке сообщества уйдёт наружу.
- Нет прав на сообщения у токена — бот не видит входящие; проверьте настройки группы.
- Запуск через screen — не переживёт ребут; только systemd.
- Игнор ошибки rate limit — ВК временно режет запросы при флуде.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для бота ВКонтактеОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Нужен ли белый IP для бота ВК?
Нет, если использовать Bots Long Poll — бот сам держит соединение с ВК. Белый IP и домен нужны только для Callback API.
vkbottle или vk_api?
vkbottle современнее и асинхронная, удобна для новых проектов. vk_api проще и синхронная — подойдёт для несложных ботов и скриптов.
Можно ли делать массовые рассылки подписчикам?
Только тем, кто писал боту в последние 24 часа, либо через одобренный шаблон рассылки. Иначе ВКонтакте блокирует сообщения как спам.