Files
VK_autolike_bot/main.py

60 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import threading
import time
import random
TARGET_GROUP_ID = 'ID_целевого_сообщества'
ACCESS_TOKEN = 'ваш_токен'
def like_post(event, vk):
try:
# Генерируем случайную задержку от 10 секунд до 1 минуты
delay = random.randint(10, 60)
time.sleep(delay)
vk.likes.add(type='post', owner_id=event.group_id, item_id=event.wall_id)
print("Пост от {} успешно лайкнут после {} секунд задержки.".format(event.group_id, delay))
except vk_api.exceptions.ApiError as e:
print("Ошибка VK API при лайке поста:", e)
except Exception as e:
print("Необработанная ошибка при лайке поста:", e)
def process_events(vk, longpoll):
print("Бот запущен. Лайкать посты из сообщества {}.".format(TARGET_GROUP_ID))
for event in longpoll.listen():
if event.type == VkEventType.WALL_POST_NEW and str(event.group_id) == TARGET_GROUP_ID:
thread = threading.Thread(target=like_post, args=(event, vk))
thread.start()
def check_new_posts(vk):
while True:
try:
# Получаем информацию о сообществе, включая количество новых постов
group_info = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')['groups'][0]
new_posts_count = group_info['wall']['count']
print("Новых постов в сообществе {}: {}".format(TARGET_GROUP_ID, new_posts_count))
# Пауза перед следующей проверкой
time.sleep(60) # Проверяем каждую минуту
except vk_api.exceptions.ApiError as e:
print("Ошибка VK API при получении информации о сообществе:", e)
except Exception as e:
print("Необработанная ошибка при проверке новых постов:", e)
def main():
vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
# Запуск потока для проверки новых постов
new_posts_thread = threading.Thread(target=check_new_posts, args=(vk,))
new_posts_thread.start()
# Обработка событий от longpoll
process_events(vk, longpoll)
if __name__ == '__main__':
main()