60 lines
2.6 KiB
Python
60 lines
2.6 KiB
Python
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()
|