Compare commits

13 Commits

Author SHA1 Message Date
b3fd5ee960 Remmove unused libraries 2024-02-28 00:08:58 +03:00
4856db6dba remove TGI && AT 2024-02-28 00:06:43 +03:00
4832b1d6c3 ALL CHANGE 2024-02-27 01:48:50 +03:00
32ff77c4f8 upd usage 2024-02-26 21:39:17 +00:00
4fb0b34c56 upd usage 2024-02-26 21:38:36 +00:00
1aabc374a0 upd usage 2024-02-26 21:30:28 +00:00
2e08f03424 upd usage 2024-02-26 21:29:13 +00:00
f774aaf50c upd usage 2024-02-26 20:56:14 +00:00
150339d5e5 add README.md 2024-02-26 23:53:39 +03:00
d6099158d6 edit requirements.txt 2024-02-26 23:33:33 +03:00
280fb5643c add random time for autolike 2024-02-26 23:16:22 +03:00
a4d576c8b4 second attemt 2024-02-26 22:57:53 +03:00
7aba562ad1 first_mine 2024-02-26 22:52:39 +03:00
4 changed files with 110 additions and 83 deletions

31
README.md Normal file
View File

@@ -0,0 +1,31 @@
# Бот VK.com для автоматического лайкинга постов сообщества
Этот скрипт на Python использует API VK для создания бота, который автоматически ставит лайки новым постам из определенного сообщества VK.com. Бот имеет дополнительные функции, такие как проверка наличия новых постов и случайная задержка перед установкой лайка.
# Предварительные требования
<p><code>Python 3.x</code><br>
Установите все зависимости: <code>python3 -m pip install -r requirments.txt</code>
# Начало работы
<p>Клонируйте или загрузите репозиторий.<br>
Получите токен доступа к API VK.<br>
Замените <code>ACCESS_TOKEN</code> и <code>TARGET_GROUP_ID</code> в скрипте на ваш токен доступа и ID целевого сообщества VK.com.<br>
Запустите скрипт с помощью <code>python main.py</code>.</p>
# Особенности
<p>Автоматический лайкинг: Бот слушает новые посты в указанном сообществе VK.com и автоматически ставит им лайки. Процесс<br> лайкинга включает случайную задержку для дополнительной вариативности.</p>
Мониторинг новых постов: Скрипт периодически проверяет наличие новых постов в сообществе с помощью метода <code>groups.getById</code>. Он выводит количество новых постов в сообществе.
# Конфигурация
<p><code>TARGET_GROUP_ID</code>: Замените на ID целевого сообщества VK.com.<br>
<code>ACCESS_TOKEN</code>: Замените на ваш токен доступа к API VK.</p>
# Использование
<p>Запустите скрипт с помощью <code>python main.py</code>.<br>
Бот начнет отслеживать указанное сообщество и автоматически ставить лайки новым постам.</p>

View File

@@ -1 +0,0 @@
303367

154
main.py
View File

@@ -1,76 +1,78 @@
import vk_api
import vk_api from vk_api.longpoll import VkLongPoll, VkEventType
import time import threading
import os import time
import chime
import os.path TARGET_GROUP_ID = ''
import pickle ACCESS_TOKEN = ''
DELAY_BETWEEN_CHECKS = 90
# Введите ваш token и id группы # Переменная для хранения ID последнего просмотренного поста
access_token = 'vk1.a.5QW0di9TmTh9LV2GalJgCbVolvGlRSZ1DgjXU6NizdeMiZUT3HZGdELZsU8AV2-l9gkuLY9Sh85t5x_ohC_Qp2XKBhg5ve25IzlLXPVJs44oTW4vshYkr4fjoZyppcmtiz-B94oiZNY15PlECXOuEfe1Y30AjOVmYoHxnb56g0W_u5w3ekdjqTYuMu-wmsn7ucEwxVxfJXEDaaEagUZWng' last_viewed_post_id = None
group_id = '58767484'
def like_post(event, vk):
# Создание сессии ВКонтакте и авторизация пользователя global last_viewed_post_id
vk_session = vk_api.VkApi(token=access_token)
vk = vk_session.get_api() try:
# Проверяем, является ли пост новым
if event.wall_id > last_viewed_post_id:
# Получение id группы # Лайкаем пост
group = vk.groups.getById(group_id=group_id) vk.likes.add(type='post', owner_id=event.group_id, item_id=event.wall_id)
group_id = group[0]['id'] print("Пост от {} успешно лайкнут.".format(event.group_id))
# Обновляем last_viewed_post_id
last_viewed_post_id = event.wall_id
# Автолайк except vk_api.exceptions.ApiError as e:
count = 1 # количество постов для получения print("Ошибка VK API при лайке поста:", e)
posts = vk.wall.get(domain=group_id, count=count)['items'] except Exception as e:
print("Необработанная ошибка при лайке поста:", e)
i = 1
def process_events(vk, longpoll):
# Основной цикл программы print("Бот запущен. Лайкать новые посты из сообщества {}.".format(TARGET_GROUP_ID))
while True: for event in longpoll.listen():
try: if event.type == VkEventType.WALL_POST_NEW and str(event.group_id) == TARGET_GROUP_ID:
like_post(event, vk)
if not os.path.exists('last_post_id.txt'):
with open('last_post_id.txt', 'w') as f: def check_new_posts(vk):
f.write('0') global last_viewed_post_id
# Получение списка записей в группе while True:
response = vk.wall.get(owner_id=-group_id, count=1) try:
last_post_id = response['items'][0]['id'] # Получаем информацию о сообществе, включая последний пост
group_info_response = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')
# Сохранение id последней записи
with open('last_post_id.txt', 'r+') as f: # Проверяем, успешно ли получены данные
try: if 'groups' in group_info_response and len(group_info_response['groups']) > 0:
saved_post_id = int(f.read()) group_info = group_info_response['groups'][0]
except:
saved_post_id = last_post_id # Получаем ID последнего поста
f.write(f"{last_post_id}") wall_info = group_info.get('wall')
print(f"{i}") if wall_info and 'from_id' in wall_info:
last_post_id = wall_info['from_id']
# Проверка наличия новой записи
if last_post_id != saved_post_id: # Проверяем, является ли последний пост новым
chime.success() if last_post_id > last_viewed_post_id:
print(f"Новая запись! https://vk.com/wall{group_id}_{last_post_id}") last_viewed_post_id = last_post_id
print("Новый пост в сообществе {}: {}".format(TARGET_GROUP_ID, last_post_id))
# Добавляем лайк и получаем ответ от API except vk_api.exceptions.ApiError as e:
likes_added = vk.likes.add(type='post', owner_id=-group_id, item_id=last_post_id) print("Ошибка VK API при получении информации о сообществе:", e)
except Exception as e:
if likes_added['likes']: print("Необработанная ошибка при проверке новых постов:", e)
print(f"Лайк успешно добавлен на запись id {last_post_id}")
else: # Добавляем задержку перед следующей проверкой
print(f"Ошибка при добавлении лайка на запись id {last_post_id}") time.sleep(DELAY_BETWEEN_CHECKS)
with open('last_post_id.txt', 'w') as f:
f.write(f"{last_post_id}")
def main():
# Задержка на 10 секунд vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
time.sleep(15) vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
except vk_api.exceptions.ApiError as error:
print(f"Ошибка API: {error}") # Запуск потока для проверки новых постов
time.sleep(15) new_posts_thread = threading.Thread(target=check_new_posts, args=(vk,))
new_posts_thread.start()
except Exception as error:
print(f"Неизвестная ошибка: {error}") # Обработка событий от longpoll
time.sleep(15) process_events(vk, longpoll)
i = i + 1
if __name__ == '__main__':
main()

View File

@@ -1,6 +1 @@
vk_api vk_api
time
os
chime
os.path
pickle