Skip to content
irpoiroPublic

About

Бот для взаимодействия продавцов с биржей FunPay через VK

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Repository files navigation

VKFunPay

Нативный VK-бот для FunPay

Управляйте магазином FunPay из ВКонтакте — заказы, сообщения, автовыдача и панель управления.

Python VK API FunPay License Version

Возможности · Преимущества · Установка · Панель управления


📑 Содержание


📌 О проекте

VKFunPay (VKFP) — бот для продавцов FunPay, полностью заточенный под ВКонтакте.

Стек собран с нуля:

  • прямые вызовы VK API (Bots Long Poll);
  • нативные callback-клавиатуры VK;
  • работа с FunPay через библиотеку FunPayAPI;

✨ Возможности

FunPay

Функция Описание
🔌 Подключение аккаунта Авторизация по golden_key, профиль, ID, активные сделки
💰 Баланс Отображение RUB / USD / EUR в консоли и в панели
💬 Чаты Получение сообщений и ответ покупателю прямо из чата
🛒 Заказы Мгновенные уведомления о новых заказах
✅ Подтверждения Реакция на закрытие/подтверждение заказа
⭐ Отзывы Уведомления + автоответы по количеству звёзд
💸 Возврат Кнопка refund прямо в карточке заказа в VK
⬆️ Поднятие лотов Автоподнятие категорий по таймеру

Уведомления в 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

🚀 Преимущества

Почему VK, а не

В России 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.py

Linux (рекомендуется)

git 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 и спросит:

  1. FunPay golden_key
  2. токен сообщества VK
  3. ID группы
  4. пароль панели управления
  5. язык интерфейса

🛠 Установка

Требования

  • Python 3.10+
  • Аккаунт продавца FunPay (golden_key из cookie)
  • Сообщество VK с включёнными сообщениями и Long Poll API

1. Подготовка сообщества VK

  1. Откройте сообщество → Управление → Настройки → Работа с API
  2. Ключи доступа → создайте ключ с правами:
    • messages
    • photos
    • docs
    • groups
  3. Long Poll API → включите, версия API актуальная
  4. Сообщения → включите сообщения сообщества + кнопку «Начать»
  5. Скопируйте ID сообщества (число без club - club198355006)

2. Зависимости

pip install -r requirements.txt

3. Запуск

В каталоге лежат два готовых батника для быстрого старта

  • install.bat
  • start.bat

Для серверов Linux — см. подробную инструкцию ниже.


🐧 Установка на Linux

💡 Обычно достаточно установки за 1 команду через ./install.sh. Ниже — ручной вариант, если хотите всё сделать сами.

Инструкция рассчитана на VPS/выделенный сервер (Ubuntu, Debian, CentOS, Fedora и аналоги).
Бот работает в long-poll режиме — открывать порты и настраивать nginx не нужно.

Ubuntu / Debian

# 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.

CentOS / Rocky / AlmaLinux / Fedora

# 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 запущен.

Фоновый запуск через systemd

Чтобы бот сам стартовал после перезагрузки сервера и перезапускался при падении.

1. Unit-файл

Подставьте своего пользователя и путь к проекту:

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 замените, если клонировали в другое место.

2. Включить и запустить

sudo systemctl daemon-reload
sudo systemctl enable vkfunpay
sudo systemctl start vkfunpay

# статус
sudo systemctl status vkfunpay

3. Логи и управление

# логи systemd (live)
sudo journalctl -u vkfunpay -f

# логи самого бота
tail -f /opt/VKFunPay/logs/vkfp.log

# перезапуск / стоп
sudo systemctl restart vkfunpay
sudo systemctl stop vkfunpay

Запуск в screen / tmux

Если systemd не хотите — достаточно терминального мультиплексора.

screen:

cd /opt/VKFunPay
source .venv/bin/activate
screen -S vkfunpay
python main.py
# отсоединиться: Ctrl+A, затем D
# вернуться: screen -r vkfunpay

tmux:

cd /opt/VKFunPay
source .venv/bin/activate
tmux new -s vkfunpay
python main.py
# отсоединиться: Ctrl+B, затем D
# вернуться: tmux attach -t vkfunpay

Обновление бота

cd /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 vkfunpay

configs/, storage/ и logs/ при git pull обычно не затираются (если не коммитили секреты). После обновления проверьте, что _main.cfg на месте.

Полезные команды (Linux)

# активен ли 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, VK token, group_id, secretKeyHash
  • В сообществе VK включены сообщения + Long Poll
  • Бот стартует без traceback
  • После пароля в ЛС появляется меню
  • systemctl enable (или screen/tmux) — процесс переживает ребут

🎛 Панель управления в VK

После успешного подключения и запуска бота, вам придёт сообщения от подключенного вами сообщества

  1. Напишите сообществу ваш пароль (первый вход).
  2. Получите доступ «🎛 Меню».
  3. Дальше пароль не нужен.

Основные разделы меню:

Раздел Что внутри
📊 Профиль Ник, 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


Сделано для стабильной торговли FunPay там, где соединение реально работает.

Если проект полезен — поставьте ⭐ на GitHub.

About

Бот для взаимодействия продавцов с биржей FunPay через VK

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages