diff --git a/main.py b/main.py index 60b7d1f..d9e3e0c 100644 --- a/main.py +++ b/main.py @@ -4,45 +4,59 @@ import threading import time import random -TARGET_GROUP_ID = 'ID_целевого_сообщества' -ACCESS_TOKEN = 'ваш_токен' +TARGET_GROUP_ID = '218295998' +ACCESS_TOKEN = 'vk1.a.q5nsJDNdQ1Xw0l_RYGSvAnhDWkFon4HIKwePCRELxAJ8zzrfUlXpTKu8pFC7hswmjXKBOcgQIlLfqD8CgElNjZsIuXhZF0mMDvnkXsi10JdOT0-RH7Q0ooi_oYyWaELW38U_Kx_2tfq6Wa0ucx8W6ICNHDzr7kff_puq_BRW9SR-mSWf0-MhkDjtomH6AYyJdkHj0RldjViMTpcX3HgK4Q' + +# Переменная для хранения ID последнего просмотренного поста +last_viewed_post_id = None def like_post(event, vk): - try: - # Генерируем случайную задержку от 10 секунд до 1 минуты - delay = random.randint(10, 60) - time.sleep(delay) + global last_viewed_post_id - vk.likes.add(type='post', owner_id=event.group_id, item_id=event.wall_id) - print("Пост от {} успешно лайкнут после {} секунд задержки.".format(event.group_id, delay)) + try: + # Проверяем, является ли пост новым + if event.wall_id > last_viewed_post_id: + # Лайкаем пост + vk.likes.add(type='post', owner_id=event.group_id, item_id=event.wall_id) + print("Пост от {} успешно лайкнут.".format(event.group_id)) + # Обновляем last_viewed_post_id + last_viewed_post_id = event.wall_id 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)) + 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() + like_post(event, vk) def check_new_posts(vk): + global last_viewed_post_id + while True: try: - # Получаем информацию о сообществе, включая количество новых постов - group_info = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')['groups'][0] - new_posts_count = group_info['wall']['count'] + # Получаем информацию о сообществе, включая последний пост + group_info_response = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall') + + # Проверяем, успешно ли получены данные + if 'groups' in group_info_response and len(group_info_response['groups']) > 0: + group_info = group_info_response['groups'][0] - print("Новых постов в сообществе {}: {}".format(TARGET_GROUP_ID, new_posts_count)) + # Получаем ID последнего поста + wall_info = group_info.get('wall') + if wall_info and 'from_id' in wall_info: + last_post_id = wall_info['from_id'] - # Пауза перед следующей проверкой - time.sleep(60) # Проверяем каждую минуту + # Проверяем, является ли последний пост новым + if last_post_id > last_viewed_post_id: + last_viewed_post_id = last_post_id + print("Новый пост в сообществе {}: {}".format(TARGET_GROUP_ID, last_post_id)) 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() @@ -56,4 +70,4 @@ def main(): process_events(vk, longpoll) if __name__ == '__main__': - main() + main() \ No newline at end of file