Управляйте магазином FunPay из ВКонтакте — заказы, сообщения, автовыдача и панель управления.
- О проекте
- Возможности
- Преимущества
- Консоль при запуске
- Быстрый старт
- Установка
- Установка на Linux
- Панель управления в VK
- Команды
- Локализация
- Безопасность
- Частые вопросы
- Лицензия и авторы
VKFunPay (VKFP) — бот для продавцов FunPay, полностью заточенный под ВКонтакте.
Стек собран с нуля:
- прямые вызовы VK API (Bots Long Poll);
- нативные callback-клавиатуры VK;
- работа с FunPay через библиотеку FunPayAPI;
| Функция | Описание |
|---|---|
| 🔌 Подключение аккаунта | Авторизация по golden_key, профиль, ID, активные сделки |
| 💰 Баланс | Отображение RUB / USD / EUR в консоли и в панели |
| 💬 Чаты | Получение сообщений и ответ покупателю прямо из чата |
| 🛒 Заказы | Мгновенные уведомления о новых заказах |
| ✅ Подтверждения | Реакция на закрытие/подтверждение заказа |
| ⭐ Отзывы | Уведомления + автоответы по количеству звёзд |
| 💸 Возврат | Кнопка refund прямо в карточке заказа в VK |
| ⬆️ Поднятие лотов | Автоподнятие категорий по таймеру |
- 💬 Новое сообщение в чате FunPay
- 🛒 Новый заказ
- 📦 Факт автовыдачи
- ✅ Подтверждение заказа
- ⬆️ Поднятие лотов
- ⭐ Новый отзыв
- ⚙️ Прочие системные события
Для каждого чата можно отдельно включить/выключить типы уведомлений (кнопки 🔔/🔕).
- Автоответчик — реакции на команды/фразы из
configs/auto_response.cfg - Автовыдача — выдача товара из файлов
storage/products/по правиламauto_delivery.cfg - Мультивыдача — несколько позиций за один заказ (опционально)
- Вотермарки — префикс к исходящим сообщениям FunPay
- Чёрный список — блок выдачи / автоответа / уведомлений по никам
- Кэш конфигов —
auto_*.cfgчитаются с проверкойmtime, без лишнего I/O на каждое сообщение
Полное меню в ЛС сообщества на нативных кнопках VK:
- профиль FunPay и баланс;
- тумблеры: поднятие / автоответ / автовыдача / мультивыдача / авторестор / автоотключение;
- настройки уведомлений;
- чёрный список;
- шаблоны быстрых ответов;
- ответы на отзывы (1–5 ⭐) и текст при подтверждении заказа;
- смена языка интерфейса;
- системная информация и перезапуск.
- 🔐 Вход в панель по паролю (bcrypt-хеш в конфиге)
- 🧠 Запоминание авторизованных пользователей между перезапусками
- 🌍 Языки: RU / EN / UK (консоль, логи, UI)
- 📁 Логи в
logs/vkfp.log
В России Telegram блокируется в настоящее время для части пользователей и инфраструктуры. Базировать критичный для продаж бот на площадке, к которой у части аудитории и серверов «плавающий» доступ, — лишний риск: задержки уведомлений, обрывы long-poll, зависимость от VPN и сторонних прокси.
ВКонтакте в этом контексте — практичная альтернатива:
| Telegram-боты | VKFunPay | |
|---|---|---|
| Доступность в РФ | Может требовать VPN / обходы | Стабильный доступ без танцев |
| Скорость работы | Зависит от маршрута и блокировок | Прямой Long Poll VK API |
| Соединение | Частые таймауты при DPI/блокировках | Устойчивый канал до API VK |
| UX управления | Стандартные инлайн-кнопки | Нативные callback-клавиатуры VK |
| Актуальность для продавца | Использование костылей/западных серверов | Управление удобно и без напряжения |
Итог: вы не теряете скорость реакции на заказы, но уходите от инфраструктурных проблем Telegram в регионе. VK здесь — не «замена ради замены», а рабочая площадка для продавца без потери отклика.
- ✅ Лёгкий стек —
requests+ стандартная библиотека Python, без тяжёлых фреймворков - ✅ Мгновенные события FunPay — runner + обработчики в отдельных потоках
- ✅ Ответ в FunPay из VK в один тап (и шаблоны)
- ✅ Мультиязычность
- ✅ Понятные конфиги — правится руками за минуту
v1.0.0-vk
VKFunPay • нативный VK-бот (vkfp)
• GitHub: github.com/irpoiro/VKFunPay
• Powered by: irpoiro
12:00:01 | INFO | VKFP.core | VK-клиент: прямое подключение (прокси не задан)
┌──────────────────────────────────────────────────┐
│ Добрый день, YourNick!
│ 🆔 Ваш ID: 1234567
│ 💰 Баланс: 1500.00 RUB · 0.0 USD · 0.0 EUR
│ 📋 Незавершённые сделки: 2
│ 🚀 Удачной торговли!
└──────────────────────────────────────────────────┘
12:00:05 | INFO | VKFP.core | Профиль обновлён: лотов=12
12:00:05 | INFO | VKFP.bot | VK Long Poll запущен (group_id=...)
12:00:05 | INFO | VKFP.core | Цикл событий FunPay запущен.
git clone https://github.com/irpoiro/VKFunPay.git
cd VKFunPay
pip install -r requirements.txt
python main.pygit clone https://github.com/irpoiro/VKFunPay.git
cd VKFunPay
chmod +x install.sh start.sh
./install.sh # зависимости + venv
./start.sh # запускС автозапуском через systemd:
./install.sh --systemdПри первом запуске бот создаст configs/_main.cfg и спросит:
- FunPay
golden_key - токен сообщества VK
- ID группы
- пароль панели управления
- язык интерфейса
- Python 3.10+
- Аккаунт продавца FunPay (
golden_keyиз cookie) - Сообщество VK с включёнными сообщениями и Long Poll API
- Откройте сообщество → Управление → Настройки → Работа с API
- Ключи доступа → создайте ключ с правами:
messagesphotosdocsgroups
- Long Poll API → включите, версия API актуальная
- Сообщения → включите сообщения сообщества + кнопку «Начать»
- Скопируйте ID сообщества (число без club -
club198355006)
pip install -r requirements.txt
В каталоге лежат два готовых батника для быстрого старта
install.batstart.bat
Для серверов Linux — см. подробную инструкцию ниже.
💡 Обычно достаточно установки за 1 команду через
./install.sh. Ниже — ручной вариант, если хотите всё сделать сами.
Инструкция рассчитана на VPS/выделенный сервер (Ubuntu, Debian, CentOS, Fedora и аналоги).
Бот работает в long-poll режиме — открывать порты и настраивать nginx не нужно.
# 1. Обновить пакеты
sudo apt update && sudo apt upgrade -y
# 2. Установить Python и инструменты сборки
# (build-essential / python3-dev нужны для bcrypt и lxml)
sudo apt install -y \
python3 \
python3-pip \
python3-venv \
git \
build-essential \
python3-dev \
libffi-dev \
libssl-dev \
libxml2-dev \
libxslt1-dev
# 3. Проверить версию (нужен 3.10+)
python3 --versionЕсли стоит Python старше 3.10 (например, только 3.8/3.9) — поставьте более новый из deadsnakes или используйте образ с актуальным Python.
# Fedora
sudo dnf install -y python3 python3-pip python3-devel git gcc gcc-c++ \
libffi-devel openssl-devel libxml2-devel libxslt-devel
# CentOS Stream / Rocky / Alma (dnf)
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y python3 python3-pip python3-devel git \
libffi-devel openssl-devel libxml2-devel libxslt-develРекомендуется ставить зависимости в venv, а не в системный Python:
# 1. Клонировать репозиторий
cd /opt # или домашний каталог: cd ~
sudo git clone https://github.com/irpoiro/VKFunPay.git
sudo chown -R "$USER":"$USER" /opt/VKFunPay
cd /opt/VKFunPay
# 2. Создать и активировать venv
python3 -m venv .venv
source .venv/bin/activate
# 3. Обновить pip и поставить зависимости
pip install --upgrade pip
pip install -r requirements.txt
# 4. Создать рабочие каталоги (на всякий случай)
mkdir -p configs logs storage/cache storage/products
# 5. Первый запуск (интерактивная настройка)
python main.pyПри первом старте бот спросит golden_key, VK-токен, ID группы, пароль панели и язык.
Либо заранее создайте configs/_main.cfg и запускайте уже с готовыми ключами.
Остановка: Ctrl + C.
Проверка, что всё поднялось:
| INFO | VKFP.bot | VK Long Poll запущен (group_id=...)
| INFO | VKFP.core | Цикл событий FunPay запущен.
Чтобы бот сам стартовал после перезагрузки сервера и перезапускался при падении.
Подставьте своего пользователя и путь к проекту:
sudo nano /etc/systemd/system/vkfunpay.service[Unit]
Description=VKFunPay — native VK bot for FunPay
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=YOUR_USER
Group=YOUR_USER
WorkingDirectory=/opt/VKFunPay
# venv-python — чтобы не зависеть от системного pip
ExecStart=/opt/VKFunPay/.venv/bin/python main.py
Restart=always
RestartSec=5
# мягкий лимит перезапусков при циклических падениях
StartLimitIntervalSec=60
StartLimitBurst=10
# логи в journald + файлы бота в logs/
StandardOutput=journal
StandardError=journal
SyslogIdentifier=vkfunpay
# чуть безопаснее окружение
Environment=PYTHONUNBUFFERED=1
Environment=LANG=en_US.UTF-8
[Install]
WantedBy=multi-user.target
YOUR_USER— обычный пользователь Linux (не обязательно root).
Путь/opt/VKFunPayзамените, если клонировали в другое место.
sudo systemctl daemon-reload
sudo systemctl enable vkfunpay
sudo systemctl start vkfunpay
# статус
sudo systemctl status vkfunpay# логи systemd (live)
sudo journalctl -u vkfunpay -f
# логи самого бота
tail -f /opt/VKFunPay/logs/vkfp.log
# перезапуск / стоп
sudo systemctl restart vkfunpay
sudo systemctl stop vkfunpayЕсли systemd не хотите — достаточно терминального мультиплексора.
screen:
cd /opt/VKFunPay
source .venv/bin/activate
screen -S vkfunpay
python main.py
# отсоединиться: Ctrl+A, затем D
# вернуться: screen -r vkfunpaytmux:
cd /opt/VKFunPay
source .venv/bin/activate
tmux new -s vkfunpay
python main.py
# отсоединиться: Ctrl+B, затем D
# вернуться: tmux attach -t vkfunpaycd /opt/VKFunPay
source .venv/bin/activate
# сохранить свои конфиги (на всякий случай)
cp configs/_main.cfg configs/_main.cfg.bak
git pull
pip install -r requirements.txt
# если крутится через systemd:
sudo systemctl restart vkfunpayconfigs/, storage/ и logs/ при git pull обычно не затираются (если не коммитили секреты). После обновления проверьте, что _main.cfg на месте.
# активен ли venv
which python # должен указать .../VKFunPay/.venv/bin/python
# ручной запуск с логом в файл
python main.py 2>&1 | tee -a logs/console.log
# права на запись кэша/логов (если Permission denied)
chmod -R u+rwX configs storage logs
# проверка Python-модулей
python -c "import requests, bcrypt, bs4, lxml, psutil; print('OK')"- Python ≥ 3.10
- Заполнены
golden_key, VKtoken,group_id,secretKeyHash - В сообществе VK включены сообщения + Long Poll
- Бот стартует без traceback
- После пароля в ЛС появляется меню
-
systemctl enable(или screen/tmux) — процесс переживает ребут
После успешного подключения и запуска бота, вам придёт сообщения от подключенного вами сообщества
- Напишите сообществу ваш пароль (первый вход).
- Получите доступ «🎛 Меню».
- Дальше пароль не нужен.
Основные разделы меню:
| Раздел | Что внутри |
|---|---|
| 📊 Профиль | Ник, ID, баланс, активные заказы |
| ⚙️ Настройки | Тумблеры автоматизации FunPay |
| 🔔 Уведомления | Вкл/выкл типы алертов для чата |
| 🚷 ЧС | Добавление/удаление ников |
| 📝 Шаблоны | Быстрые ответы покупателям |
| 🌐 Язык | RU / EN / UK |
| ⭐ Отзывы | Автоответы 1–5 ★ |
| ✅ Подтверждение | Текст после закрытия заказа |
| 🖥 Система | Аптайм, RAM, instance id, рестарт |
Из карточки заказа/сообщения:
- 💬 ответить в FunPay;
- 📝 вставить шаблон;
- 💸 оформить возврат;
- 🌐 открыть чат/заказ на сайте.
В ЛС сообщества (после авторизации):
| Команда | Действие |
|---|---|
/menu · меню |
Главное меню |
/profile · профиль |
Профиль FunPay |
/sys · система |
Нагрузка и аптайм |
/restart · перезапуск |
Рестарт процесса |
/help · помощь |
Справка |
Постоянная кнопка «🎛 Меню» дублирует /menu.
Язык задаётся в конфиге:
[Other]
language: ru # ru | en | ukИли из меню VK → 🌐 Язык.
Локализуются:
- приветствие в консоли;
- системные логи ядра;
- тексты панели и тосты;
- сообщения об ошибках/успехе.
| Мера | Как устроено |
|---|---|
| Пароль панели | Только bcrypt-хеш в _main.cfg, не plaintext |
| Сессия VK-доступа | (user_id → peer_id) |
| Лимит попыток | После 5 неверных паролей — происходит отказ в доступе |
blockLogin |
Можно закрыть вход новым пользователям |
Бот снова просит пароль после рестарта?
Убедитесь, что файл storage/cache/vk_authorized.json существует и доступен на запись.
В актуальной версии ключи нормализуются в int при загрузке — авторизация переживает перезапуск.
Не приходят сообщения VK
- Long Poll API включён
- у токена есть
messages - сообщения сообщества включены
- вы авторизованы паролем и для чата включены нужные типы уведомлений
Автовыдача не срабатывает
autoDelivery: 1- название секции из
auto_delivery.cfgвстречается в лоте - в
storage/products/есть непустой файл - ник покупателя не в ЧС (если включён blockDelivery)
Где взять golden_key?
В браузере на funpay.com → DevTools → Application/Storage → Cookies → golden_key.
VKFunPay · нативный VK-бот для FunPay
- GitHub: github.com/irpoiro/VKFunPay
- Powered by: irpoiro
- Версия:
1.0.1-vk
Сделано для стабильной торговли FunPay там, где соединение реально работает.
Если проект полезен — поставьте ⭐ на GitHub.