ALL CHANGE
This commit is contained in:
52
main.py
52
main.py
@@ -4,45 +4,59 @@ import threading
|
|||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
|
|
||||||
TARGET_GROUP_ID = 'ID_целевого_сообщества'
|
TARGET_GROUP_ID = '218295998'
|
||||||
ACCESS_TOKEN = 'ваш_токен'
|
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):
|
def like_post(event, vk):
|
||||||
try:
|
global last_viewed_post_id
|
||||||
# Генерируем случайную задержку от 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)
|
try:
|
||||||
print("Пост от {} успешно лайкнут после {} секунд задержки.".format(event.group_id, delay))
|
# Проверяем, является ли пост новым
|
||||||
|
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:
|
except vk_api.exceptions.ApiError as e:
|
||||||
print("Ошибка VK API при лайке поста:", e)
|
print("Ошибка VK API при лайке поста:", e)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Необработанная ошибка при лайке поста:", e)
|
print("Необработанная ошибка при лайке поста:", e)
|
||||||
|
|
||||||
def process_events(vk, longpoll):
|
def process_events(vk, longpoll):
|
||||||
print("Бот запущен. Лайкать посты из сообщества {}.".format(TARGET_GROUP_ID))
|
print("Бот запущен. Лайкать новые посты из сообщества {}.".format(TARGET_GROUP_ID))
|
||||||
for event in longpoll.listen():
|
for event in longpoll.listen():
|
||||||
if event.type == VkEventType.WALL_POST_NEW and str(event.group_id) == TARGET_GROUP_ID:
|
if event.type == VkEventType.WALL_POST_NEW and str(event.group_id) == TARGET_GROUP_ID:
|
||||||
thread = threading.Thread(target=like_post, args=(event, vk))
|
like_post(event, vk)
|
||||||
thread.start()
|
|
||||||
|
|
||||||
def check_new_posts(vk):
|
def check_new_posts(vk):
|
||||||
|
global last_viewed_post_id
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
# Получаем информацию о сообществе, включая количество новых постов
|
# Получаем информацию о сообществе, включая последний пост
|
||||||
group_info = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')['groups'][0]
|
group_info_response = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')
|
||||||
new_posts_count = group_info['wall']['count']
|
|
||||||
|
# Проверяем, успешно ли получены данные
|
||||||
|
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:
|
except vk_api.exceptions.ApiError as e:
|
||||||
print("Ошибка VK API при получении информации о сообществе:", e)
|
print("Ошибка VK API при получении информации о сообществе:", e)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Необработанная ошибка при проверке новых постов:", e)
|
print("Необработанная ошибка при проверке новых постов:", e)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
|
vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
|
||||||
vk = vk_session.get_api()
|
vk = vk_session.get_api()
|
||||||
@@ -56,4 +70,4 @@ def main():
|
|||||||
process_events(vk, longpoll)
|
process_events(vk, longpoll)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
Reference in New Issue
Block a user