[Python] VK.com auto unsub publics, clubs, remove private chats

  • Автор темы Автор темы root
  • Дата начала Дата начала
Скрипт, который позволяет выйти со всех пабликов, клубов, а также почистить личные переписки.

Настройки
Код:
# Вставьте ваш токен
ACCESS_TOKEN = 'YOU_TOKEN'

UNSUBSCRIBE_GROUPS = True  # Отписаться от всех групп
UNSUBSCRIBE_PUBLICS = True  # Отписаться от всех пабликов
CLEAR_MESSAGES = True      # Очистить историю сообщений
CLEAR_ARCHIVED_CHATS = True  # Очистить архивированные чаты
DELAY_BETWEEN_REQUESTS = 1  # Задержка между запросами (в секундах)
Код на python:
[HIDE]
Python:
import vk_api
from vk_api.exceptions import ApiError
import time

# Вставьте ваш токен
ACCESS_TOKEN = 'YOU_TOKEN'

# Настройки: Укажите, что нужно удалить
UNSUBSCRIBE_GROUPS = True  # Отписаться от всех групп
UNSUBSCRIBE_PUBLICS = True  # Отписаться от всех пабликов
CLEAR_MESSAGES = True      # Очистить историю сообщений
CLEAR_ARCHIVED_CHATS = True  # Очистить архивированные чаты
DELAY_BETWEEN_REQUESTS = 1  # Задержка между запросами (в секундах)

# Создаем сессию VK API
vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
vk = vk_session.get_api()

def get_all_groups():
    groups = []
    offset = 0
    while True:
        try:
            response = vk.groups.get(filter='groups', count=1000, offset=offset)
            items = response.get('items', [])
            if not items:
                break
            groups.extend(items)
            offset += len(items)
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Ошибка при получении списка групп: {e}")
            break
    return groups

def get_all_publics():
    publics = []
    offset = 0
    while True:
        try:
            response = vk.groups.get(filter='publics', count=1000, offset=offset)
            items = response.get('items', [])
            if not items:
                break
            publics.extend(items)
            offset += len(items)
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Ошибка при получении списка пабликов: {e}")
            break
    return publics

def unsubscribe_from_groups(groups):
    for group_id in groups:
        try:
            vk.groups.leave(group_id=group_id)
            print(f"Отписались от группы с ID: {group_id}")
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Не удалось отписаться от группы с ID {group_id}: {e}")

def unsubscribe_from_publics(publics):
    for public_id in publics:
        try:
            vk.groups.leave(group_id=public_id)
            print(f"Отписались от паблика с ID: {public_id}")
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Не удалось отписаться от паблика с ID {public_id}: {e}")

def get_all_conversations(filter_type='all'):
    if filter_type not in ['all', 'archive']:
        raise ValueError("Неверное значение filter_type. Допустимые значения: 'all', 'archive'.")

    conversations = []
    offset = 0
    while True:
        try:
            response = vk.messages.getConversations(filter=filter_type, count=200, offset=offset)
            items = response.get('items', [])
            if not items:
                break
            conversations.extend([item['conversation']['peer']['id'] for item in items])
            offset += len(items)
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Ошибка при получении списка диалогов: {e}")
            break
    return conversations

def clear_message_history(conversations):
    for peer_id in conversations:
        try:
            vk.messages.deleteConversation(peer_id=peer_id)
            print(f"Очищена история с ID: {peer_id}")
            time.sleep(DELAY_BETWEEN_REQUESTS)
        except ApiError as e:
            print(f"Не удалось очистить историю с ID {peer_id}: {e}")

def main():
    if UNSUBSCRIBE_GROUPS:
        print("Начинаем отписку от групп...")
        groups = get_all_groups()
        unsubscribe_from_groups(groups)
        print("Отписка от групп завершена.")

    if UNSUBSCRIBE_PUBLICS:
        print("Начинаем отписку от пабликов...")
        publics = get_all_publics()
        unsubscribe_from_publics(publics)
        print("Отписка от пабликов завершена.")

    if CLEAR_MESSAGES:
        print("Начинаем очистку истории сообщений...")
        conversations = get_all_conversations(filter_type='all')
        clear_message_history(conversations)
        print("Очистка истории сообщений завершена.")

    if CLEAR_ARCHIVED_CHATS:
        print("Начинаем очистку архивированных чатов...")
        archived_conversations = get_all_conversations(filter_type='archive')
        clear_message_history(archived_conversations)
        print("Очистка архивированных чатов завершена.")

if __name__ == '__main__':
    main()
[/HIDE]

Как получить токен?
  • — удобный инструмент для получения токена.
    1. Откройте сайт.
    2. Выберите приложение (например, "Kate Mobile").
    3. Авторизуйтесь в VK.
    4. Скопируйте токен из адресной строки.
Инструкция (под Linux):
  1. python3 -m venv env (создаем окружение)
  2. source env/bin/activate (входим в окружение)
  3. pip install vk_api
  4. настройте скрипт (вставить токен, выбрать параметры удаления)
  5. python vk.py (запустить обработку)
Пример лога:
Код:
Начинаем отписку от групп...
Отписка от групп завершена.
Начинаем отписку от пабликов...
Отписка от пабликов завершена.
Начинаем очистку истории сообщений...
Очистка истории сообщений завершена.
Начинаем очистку архивированных чатов...
Очистка архивированных чатов завершена.
Очищена история с ID: 1
Очищена история с ID: 2
Отписались от группы с ID: 23
 
Назад
Сверху