From 7aba562ad1024b8edd02770c0db8b26507365b9a Mon Sep 17 00:00:00 2001 From: Dmitriy Gorshenin Date: Mon, 26 Feb 2024 22:52:39 +0300 Subject: [PATCH] first_mine --- main.py | 107 ++++++++++++++--------------------------------- requirements.txt | 6 +-- 2 files changed, 32 insertions(+), 81 deletions(-) diff --git a/main.py b/main.py index a83e3d6..328790e 100644 --- a/main.py +++ b/main.py @@ -1,76 +1,31 @@ - -import vk_api -import time -import os -import chime -import os.path -import pickle - - -# Введите ваш token и id группы -access_token = 'vk1.a.5QW0di9TmTh9LV2GalJgCbVolvGlRSZ1DgjXU6NizdeMiZUT3HZGdELZsU8AV2-l9gkuLY9Sh85t5x_ohC_Qp2XKBhg5ve25IzlLXPVJs44oTW4vshYkr4fjoZyppcmtiz-B94oiZNY15PlECXOuEfe1Y30AjOVmYoHxnb56g0W_u5w3ekdjqTYuMu-wmsn7ucEwxVxfJXEDaaEagUZWng' -group_id = '58767484' - -# Создание сессии ВКонтакте и авторизация пользователя -vk_session = vk_api.VkApi(token=access_token) -vk = vk_session.get_api() - - -# Получение id группы -group = vk.groups.getById(group_id=group_id) -group_id = group[0]['id'] - - -# Автолайк -count = 1 # количество постов для получения -posts = vk.wall.get(domain=group_id, count=count)['items'] - -i = 1 - -# Основной цикл программы -while True: - try: - - if not os.path.exists('last_post_id.txt'): - with open('last_post_id.txt', 'w') as f: - f.write('0') - - # Получение списка записей в группе - response = vk.wall.get(owner_id=-group_id, count=1) - last_post_id = response['items'][0]['id'] - - # Сохранение id последней записи - with open('last_post_id.txt', 'r+') as f: - try: - saved_post_id = int(f.read()) - except: - saved_post_id = last_post_id - f.write(f"{last_post_id}") - print(f"{i}") - - # Проверка наличия новой записи - if last_post_id != saved_post_id: - chime.success() - print(f"Новая запись! https://vk.com/wall{group_id}_{last_post_id}") - - # Добавляем лайк и получаем ответ от API - likes_added = vk.likes.add(type='post', owner_id=-group_id, item_id=last_post_id) - - if likes_added['likes']: - print(f"Лайк успешно добавлен на запись id {last_post_id}") - else: - print(f"Ошибка при добавлении лайка на запись id {last_post_id}") - with open('last_post_id.txt', 'w') as f: - f.write(f"{last_post_id}") - - # Задержка на 10 секунд - time.sleep(15) - - except vk_api.exceptions.ApiError as error: - print(f"Ошибка API: {error}") - time.sleep(15) - - except Exception as error: - print(f"Неизвестная ошибка: {error}") - time.sleep(15) - i = i + 1 \ No newline at end of file +import vk_api +from vk_api.longpoll import VkLongPoll, VkEventType +import threading + +TARGET_GROUP_ID = 'ID_целевого_сообщества' +ACCESS_TOKEN = 'ваш_токен' + +def like_post(event, vk): + try: + vk.likes.add(type='post', owner_id=event.group_id, item_id=event.wall_id) + print("Пост от {} успешно лайкнут.".format(event.group_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)) + 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 main(): + vk_session = vk_api.VkApi(token=ACCESS_TOKEN) + vk = vk_session.get_api() + longpoll = VkLongPoll(vk_session) + process_events(vk, longpoll) + +if __name__ == '__main__': + main() diff --git a/requirements.txt b/requirements.txt index 83b9a0f..e1bf926 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,2 @@ vk_api -time -os -chime -os.path -pickle \ No newline at end of file +threads