Skill: mirra87654321/funpay-assistant (version 1.0.0)

# FunPay Assistant Skill Автоматизация ответов и мониторинг чатов FunPay. ## Возможности - Автоматический ответ на проблемы с регионом (Chile/VPN). - Ответы на вопросы о наличии ("В наличии", "Ты тут?"). - Уведомление в Telegram о согласии на вход в аккаунт. - Пересылка неопознанных сообщений владельцу. ## Использование Скрипт `monitor.py` проверяет новые сообщения и выполняет действия согласно логике.

path: monitor.py
content: 
import sys
import time
import json
import os
import requests
from FunPayAPI.account import Account

# Установка UTF-8
sys.stdout.reconfigure(encoding='utf-8')

GOLDEN_KEY = "r7sb47vn2sq6vhziu7veeh8eh31j02bz"
STATE_FILE = os.path.join(os.path.dirname(__file__), "state.json")

# Тексты ответов
REGION_ERROR_REPLY = "К сожалению, по правилам FunPay запрещает упоминать любые прокси или VPN сервисы. Если в вашем впне нет региона Чили, то могу предложить такой вариант: Я захожу к вам на аккаунт и активирую ваш ключ."
AVAILABILITY_REPLY = "Да, в наличии."
HERE_REPLY = "Да, на связи."

def load_state():
    if os.path.exists(STATE_FILE):
        try:
            with open(STATE_FILE, "r", encoding="utf-8") as f:
                return json.load(f)
        except:
            pass
    return {"last_message_texts": {}, "auto_replied_chats": []}

def save_state(state):
    with open(STATE_FILE, "w", encoding="utf-8") as f:
        json.dump(state, f, ensure_ascii=False, indent=4)

# Временная заплатка для метода send_message, который ломается на парсинге ответа
def safe_send_message(acc, chat_id, text):
    try:
        acc.send_message(chat_id, text)
    except AttributeError:
        # Игнорируем ошибку парсинга HTML, если запрос ушел успешно
        pass
    except Exception as e:
        print(f"Ошибка отправки в чат {chat_id}: {e}")

def check_funpay():
    state = load_state()
    acc = Account(GOLDEN_KEY).get()
    chats = acc.request_chats()
    
    notifications = []
    
    for chat in chats:
        chat_id = str(chat.id)
        msg_text = getattr(chat, 'last_message_text', None)
        
        if msg_text is None:
            continue
            
        last_msg_lower = msg_text.lower()
        
        # Проверка дубликатов
        if state["last_message_texts"].get(chat_id) == msg_text:
            continue
            
        state["last_message_texts"][chat_id] = msg_text
        
        # 1. Проверка на жалобы по региону/активации
        if any(x in last_msg_lower for x in ["не получается", "недоступно", "регион", "чили", "впн", "vpn", "ошибка"]):
            safe_send_message(acc, chat.id, REGION_ERROR_REPLY)
            if chat_id not in state["auto_replied_chats"]:
                state["auto_replied_chats"].append(chat_id)
            print(f"DEBUG: Ответил на проблему в чате {chat.name}")
            continue

        # 2. Проверка на согласие
        if chat_id in state["auto_replied_chats"]:
            if any(x in last_msg_lower for x in ["давай", "согласен", "заходи", "окей", "ок", "хорошо"]):
                notifications.append(f"🔔 СРОЧНО: Покупатель {chat.name} согласен на вход в аккаунт! (ID: {chat_id})")
                state["auto_replied_chats"].remove(chat_id)
                continue

        # 3. Проверка на "Ты тут?" / "В наличии?"
        if any(x in last_msg_lower for x in ["тут", "здесь", "на связи", "ты тут"]):
            safe_send_message(acc, chat.id, HERE_REPLY)
            continue
        if any(x in last_msg_lower for x in ["в наличии", "есть?", "актуально"]):
            safe_send_message(acc, chat.id, AVAILABILITY_REPLY)
            continue

        # 4. Пересылка админу
        if "подтвердил успешное выполнение заказа" not in last_msg_lower:
             notifications.append(f"📩 Сообщение от {chat.name}:\n\"{msg_text}\"\n(ID: {chat_id})")

    save_state(state)
    return notifications

if __name__ == "__main__":
    try:
        results = check_funpay()
        for note in results:
            print(f"NOTIFY: {note}")
    except Exception as e:
        import traceback
        traceback.print_exc()


path: state.json
content: {
    "last_message_texts": {
        "239122985": "⁤К сожалению, по правилам FunPay запрещает упоминать любые прокси или VPN сервисы. Если в вашем впне нет региона Чили, то могу предложить такой вариант: Я захожу к вам на аккаунт и активирую ваш ключ.",
        "239144364": "уволен.",
        "239117001": "потом чуток",
        "237149160": "я так быстрее увижу и приду к вам",
        "239099466": "Покупатель irooler подтвердил успешное выполнение заказа #JTYQL57S и отправил деньги продавцу D0g9y.",
        "231462729": "Покупатель Melisandre подтвердил успешное выполнение заказа #BK1BQCH2 и отправил деньги продавцу D0g9y.",
        "239067157": "Да",
        "231983693": "Администратор Brian подтвердил успешное выполнение заказа #X59H3YDH и отправил деньги продавцу D0g9y.",
        "236940596": "Администратор Brian подтвердил успешное выполнение заказа #WTF4PADN и отправил деньги продавцу D0g9y.",
        "237003932": "Администратор Brian подтвердил успешное выполнение заказа #T7RC2ZGP и отправил деньги продавцу D0g9y.",
        "237089166": "Администратор Brian подтвердил успешное выполнение заказа #NCTDK5FS и отправил деньги продавцу D0g9y.",
        "237220738": "Администратор Brian подтвердил успешное выполнение заказа #BGQEM678 и отправил деньги продавцу D0g9y.",
        "237239883": "Администратор Brian подтвердил успешное выполнение заказа #ZQDQM7Q4 и отправил деньги продавцу D0g9y.",
        "237423696": "Администратор Brian подтвердил успешное выполнение заказа #VVUZWNLE и отправил деньги продавцу D0g9y.",
        "237473281": "Администратор Brian подтвердил успешное выполнение заказа #XNZ5TATR и отправил деньги продавцу D0g9y.",
        "237792106": "Администратор Brian подтвердил успешное выполнение заказа #HULWX6VQ и отправил деньги продавцу D0g9y.",
        "238301070": "Администратор Brian подтвердил успешное выполнение заказа #K2BF7723 и отправил деньги продавцу D0g9y.",
        "238375606": "Администратор Brian подтвердил успешное выполнение заказа #VS1JECCV и отправил деньги продавцу D0g9y.",
        "238463557": "Администратор Brian подтвердил успешное выполнение заказа #RT9R4UE5 и отправил деньги продавцу D0g9y.",
        "238493974": "Администратор Brian подтвердил успешное выполнение заказа #ZMEDJVN8 и отправил деньги продавцу D0g9y.",
        "238521133": "Администратор Brian подтвердил успешное выполнение заказа #Q9HR2AVJ и отправил деньги продавцу D0g9y.",
        "238529713": "Администратор Brian подтвердил успешное выполнение заказа #DRJQRWUX и отправил деньги продавцу D0g9y.",
        "238555156": "Администратор Brian подтвердил успешное выполнение заказа #D7Z389CB и отправил деньги продавцу D0g9y.",
        "231773848": "Администратор Brian подтвердил успешное выполнение заказа #C3BNHMEW и отправил деньги продавцу D0g9y.",
        "238608073": "Администратор Brian подтвердил успешное выполнение заказа #NZ3LZGWQ и отправил деньги продавцу D0g9y.",
        "238903614": "Администратор Brian подтвердил успешное выполнение заказа #KDNK54PZ и отправил деньги продавцу D0g9y.",
        "237167439": "Администратор Brian подтвердил успешное выполнение заказа #TYDUPB4T и отправил деньги продавцу D0g9y.",
        "239041011": "ну на этом пока все)",
        "238665400": "ближе к вечеру",
        "239017938": "ни в коем случае",
        "239016524": "Уже не актуально",
        "238997712": "Покупатель Fej подтвердил успешное выполнение заказа #A4CKU5EF и отправил деньги продавцу D0g9y.",
        "238579259": "Покупатель IslandKey подтвердил успешное выполнение заказа #WPLV8QLK и отправил деньги продавцу D0g9y.",
        "238986768": "Покупатель uqkgeniy подтвердил успешное выполнение заказа #R836686L и отправил деньги продавцу D0g9y.",
        "238710683": "Напишите подалуйста /help как будете готовы",
        "238962150": "Главное чтобы он был на регион Чили",
        "238480752": "я просто на один акк еще хочу купить",
        "238756091": "Покупатель Pan1ka0880 подтвердил успешное выполнение заказа #BB9W97CL и отправил деньги продавцу D0g9y.",
        "238775826": "Покупатель KRi1nD подтвердил успешное выполнение заказа #RL5V1B8C и отправил деньги продавцу D0g9y.",
        "238810440": "Промоакция для Южной Америки, администрация перплексити борется с тем чтобы промокоды не заходились по миру, поэтому бывает что отключает подписки",
        "238739033": "Покупатель Motivat написал отзыв к заказу #N8Z61ZDR.",
        "238792458": "устроит?",
        "238782289": "Покупатель LilacTreasures подтвердил успешное выполнение заказа #GAMBK7L3 и отправил деньги продавцу D0g9y.",
        "238230970": "Могу активировать на ваш аккаунт",
        "238748207": "Покупатель sn3ike написал отзыв к заказу #W6Y2MKW3.",
        "238758355": "Хорошего дня",
        "238737063": "окей, спасибо",
        "238628068": "Покупатель TurboMailer подтвердил успешное выполнение заказа #LBTVA6TU и отправил деньги продавцу D0g9y.",
        "231744465": "только для тех где не было подписки",
        "238745695": "надо создать новый"
    },
    "auto_replied_chats": [
        "239122985",
        "238962150"
    ]
}

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (MEDIUM)