Skip to content

sunnuls/chatterbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fansly AI Chat Bot

Desktop приложение с Tkinter GUI для автоматизированного AI чат-бота на платформе Fansly.

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

  • Tkinter GUI: Простой и удобный интерфейс
  • Tray Icon: Работа в фоне 24/7 с системным треем
  • Безопасность: Зашифрованное хранение токенов и чатов с Fernet (cryptography)
  • AI Ответы: Автоматическая генерация ответов с помощью Mistral-7B-Instruct
  • Авторизация: Поддержка Bearer token и email/password через GraphQL
  • Standalone EXE: Сборка в один исполняемый файл с PyInstaller (--onefile --windowed)
  • Reverse-engineered API: Использует Fansly GraphQL API и Selenium fallback
  • Rate Limiting: Автоматическое ограничение скорости (10 сообщений/минуту)
  • Style Analysis: Анализ стиля общения из исторических чатов

📋 Системные требования

  • Python 3.10+
  • Windows 10/11 (64-bit)
  • Chrome браузер (для Selenium fallback)
  • 4+ GB RAM (8+ GB рекомендуется для AI моделей)
  • Подключение к интернету
  • NVIDIA GPU (опционально, для ускорения AI)

📦 Установка

Из исходного кода:

  1. Клонируйте репозиторий:
git clone <repository-url>
cd fanlsy_autochat_bot
  1. Установите зависимости:
pip install -r requirements.txt
  1. Запустите приложение:
python main.py

Standalone EXE:

  1. Сборка:
python build.py
  1. Исполняемый файл будет в dist/Fansly_AI_ChatBot.exe

  2. Запуск:

dist\Fansly_AI_ChatBot.exe

🔑 Activation Keys (Демо)

Для тестирования используйте демо ключи:

  • DEMO1234567890ABCDEF1234567890AB
  • TEST1234567890ABCDEF1234567890AB

📖 Как получить Fansly Bearer Token

Метод 1: DevTools (Рекомендуется)

Важно: Вы должны быть на сайте fansly.com, а не на других сайтах!

  1. Откройте fansly.com в браузере Chrome/Edge/Yandex
  2. Войдите в свой аккаунт Fansly (это обязательно!)
  3. Откройте DevTools (F12 или Ctrl+Shift+I)
  4. Перейдите на вкладку Network
  5. Важно: Убедитесь, что вы находитесь на странице Fansly (в адресной строке должно быть fansly.com)
  6. Обновите страницу Fansly (F5) или перейдите в раздел Messages / Subscribers
  7. В списке запросов найдите запросы к api.fansly.com или apiv3.fansly.com
    • Ищите запросы с именами: graphql, messages, conversations, account, me
    • Обычно это запросы типа xhr или fetch
    • Статус должен быть 200 (зеленый)
  8. Кликните на один из этих запросов
  9. В правой панели откройте вкладку Headers
  10. Прокрутите вниз до раздела Request Headers
  11. Найдите заголовок Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  12. Скопируйте только токен (длинную строку после слова "Bearer", без самого слова "Bearer")

Если не видите запросы к API:

  • Убедитесь, что вы на странице fansly.com и вошли в аккаунт
  • Попробуйте очистить фильтры в Network tab
  • Обновите страницу (F5) или перейдите в другой раздел сайта

Метод 2: Email/Password

Приложение поддерживает автоматическую авторизацию через email/password с использованием reverse-engineered GraphQL API.

🎯 Использование

Базовое использование:

  1. Запустите приложение
python main.py
  1. Введите Activation Key

    • Используйте один из демо ключей
    • Нажмите "Validate Key"
  2. Настройте авторизацию Fansly

    • Bearer Token: Вставьте токен из DevTools (вкладка "Bearer Token")
    • Email/Password: Введите учетные данные (вкладка "Email/Password")
  3. Войдите в аккаунт

    • Нажмите "Login"
    • Дождитесь успешной авторизации
    • Приложение автоматически загрузит исторические чаты для анализа стиля
  4. Запустите бота

    • Нажмите "Start Bot"
    • Бот начнет polling чатов каждые 30 секунд
    • Автоматически генерирует и отправляет ответы
  5. Работа в фоне (24/7)

    • Закройте окно приложения (оно скроется в tray)
    • Tray icon появится в системном трее
    • Правый клик на иконке для управления

Как найти селекторы для Selenium (DevTools):

Если GraphQL API недоступен, приложение использует Selenium fallback. Для обновления селекторов:

  1. Откройте Fansly в Chrome
  2. Откройте DevTools (F12)
  3. Перейдите на вкладку Elements
  4. Используйте инструмент выбора (Ctrl+Shift+C)
  5. Наведите на элемент (например, поле ввода сообщения)
  6. Скопируйте CSS селектор из DevTools
  7. Обновите селекторы в scraper.pySELECTORS

Примеры селекторов:

  • Поле email: input[type="email"]
  • Поле пароля: input[type="password"]
  • Кнопка логина: button[type="submit"]
  • Сообщения: .message-text или [class*="message"]

📁 Структура проекта

fanlsy_autochat_bot/
├── main.py              # Главное приложение с GUI и tray icon
├── config.py            # Зашифрованное хранение настроек (Fernet)
├── auth.py              # Fansly авторизация (GraphQL + Selenium)
├── bot.py               # Логика чат-бота
├── scraper.py           # Скрапинг чатов (GraphQL + Selenium fallback)
├── ai.py                # AI генерация ответов (Mistral-7B-Instruct)
├── build.py             # Скрипт сборки PyInstaller
├── main.spec            # PyInstaller spec файл
├── test_bot.py          # Unit тесты
├── requirements.txt     # Зависимости Python
├── README.md            # Документация
└── config.json          # Зашифрованные настройки (создается автоматически)

🔧 Компоненты

BotApp (main.py)

  • Tkinter GUI интерфейс
  • Tray icon для работы в фоне
  • Управление потоками
  • Обработка событий
  • Логирование активности

ConfigManager (config.py)

  • Шифрование токенов и чатов с Fernet (cryptography)
  • PBKDF2 для выведения ключей
  • Локальная валидация activation key
  • Безопасное хранение credentials

FanslyAuth (auth.py)

  • Bearer token авторизация
  • Email/password авторизация через GraphQL
  • Selenium fallback для логина
  • Автоматическое управление Chrome WebDriver
  • Token refresh каждые 24 часа

ChatBot (bot.py)

  • Скрапинг новых сообщений
  • AI генерация ответов
  • Управление контекстом разговоров
  • Человекоподобные задержки ответов

Scraper (scraper.py)

  • GraphQL polling чатов
  • Selenium fallback если GraphQL недоступен
  • Rate limiting (10 сообщений/минуту)
  • Queue для множественных чатов
  • Simulate mode для тестирования

AI (ai.py)

  • Mistral-7B-Instruct для генерации ответов
  • Sentence Transformers для анализа стиля
  • GPU/CPU автоматическое определение
  • Fallback на DialoGPT если Mistral недоступен

🔒 Безопасность и Privacy

Шифрование:

  • Fernet (cryptography): AES-128 в режиме CBC
  • PBKDF2: 100,000 итераций для выведения ключей
  • Локальное хранение: Все данные хранятся локально, никаких внешних серверов
  • Activation Key: Используется как пароль для шифрования

Что шифруется:

  • Bearer tokens
  • Email/password (если используются)
  • Chat data (исторические сообщения)
  • User credentials

Рекомендации:

  • Используйте сильный activation key
  • Не делитесь config.json файлом
  • Регулярно обновляйте Bearer token
  • Используйте VPN при необходимости

⚠️ Риски и предупреждения

Terms of Service (TOS) Violation:

⚠️ ВНИМАНИЕ: Использование автоматизированных ботов может нарушать Terms of Service Fansly.

Риски:

  • Блокировка аккаунта
  • Потеря доступа к контенту
  • Юридические последствия
  • Нарушение правил платформы

Рекомендации:

  • Используйте только для личных целей
  • Не злоупотребляйте rate limiting
  • Соблюдайте правила платформы
  • Используйте на свой страх и риск

Технические риски:

  • Reverse-engineered API: Может перестать работать после обновлений Fansly
  • Selenium Detection: Fansly может обнаружить автоматизацию
  • Token Expiration: Токены истекают каждые 24 часа
  • Rate Limiting: Превышение лимитов может привести к блокировке

Меры предосторожности:

  • Регулярно проверяйте работоспособность
  • Используйте VPN для дополнительной защиты
  • Не используйте на основных аккаунтах
  • Делайте резервные копии данных

🧪 Тестирование

Unit тесты:

python test_bot.py

Тесты включают:

  • Генерация флиртующих ответов
  • Извлечение стиля из ответов
  • Шифрование конфигурации
  • Mock scraper тесты

Simulate mode:

python test_bot_loop.py

Или напрямую:

from scraper import bot_loop
import threading

stop_event = threading.Event()
bot_loop(None, "flirty with 😘", None, None, True, None, stop_event)

⚙️ Настройки

В коде можно настроить:

# Bot delays
response_delay_min = 10  # секунд
response_delay_max = 60  # секунд  
check_interval = 30      # секунд

# Rate limiting
rate_limit_max = 10     # сообщений
rate_limit_window = 60  # секунд

# AI models
model_name = "mistralai/Mistral-7B-Instruct-v0.1"
fallback_model = "microsoft/DialoGPT-medium"
sentence_model = "all-MiniLM-L6-v2"

# Selenium
headless = True
user_agent = "Mozilla/5.0..."

🚨 Важные замечания

⚠️ Это приложение предназначено только для образовательных целей

⚠️ Использует reverse-engineered API - может перестать работать после обновлений Fansly

⚠️ Используйте с осторожностью и соблюдайте Terms of Service

⚠️ Автор не несет ответственности за блокировку аккаунтов или другие последствия

⚠️ Использование автоматизации может нарушать правила платформы

📞 Поддержка

При возникновении проблем:

  1. Проверьте логи в приложении
  2. Убедитесь что все зависимости установлены
  3. Проверьте что Bearer token актуальный
  4. Попробуйте перезапустить приложение
  5. Проверьте что Chrome установлен (для Selenium)
  6. Убедитесь что Python 3.10+ установлен

🔄 Интеграция компонентов

Поток работы приложения:

GUI (main.py)
  ↓
Auth (auth.py) → GraphQL API / Selenium
  ↓
Scraper (scraper.py) → Poll чатов каждые 30s
  ↓
AI (ai.py) → Генерация ответов
  ↓
Bot Loop (scraper.py) → Отправка через GraphQL/Selenium
  ↓
Rate Limiting → Максимум 10/min

📄 Лицензия

Этот проект предоставляется "как есть" для образовательных целей.


Основано на исследованиях проекта yllvar/fansly-api

📚 Источники

  • PyInstaller documentation
  • Selenium 2025 best practices
  • HuggingFace Transformers documentation
  • Cryptography (Fernet) documentation
  • pystray documentation

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages