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

122
main.py
View File

@@ -1,76 +1,78 @@
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import threading
import time
import os
import chime
import os.path
import pickle
TARGET_GROUP_ID = ''
ACCESS_TOKEN = ''
DELAY_BETWEEN_CHECKS = 90
# Введите ваш token и id группы
access_token = 'vk1.a.5QW0di9TmTh9LV2GalJgCbVolvGlRSZ1DgjXU6NizdeMiZUT3HZGdELZsU8AV2-l9gkuLY9Sh85t5x_ohC_Qp2XKBhg5ve25IzlLXPVJs44oTW4vshYkr4fjoZyppcmtiz-B94oiZNY15PlECXOuEfe1Y30AjOVmYoHxnb56g0W_u5w3ekdjqTYuMu-wmsn7ucEwxVxfJXEDaaEagUZWng'
group_id = '58767484'
# Переменная для хранения ID последнего просмотренного поста
last_viewed_post_id = None
# Создание сессии ВКонтакте и авторизация пользователя
vk_session = vk_api.VkApi(token=access_token)
vk = vk_session.get_api()
def like_post(event, vk):
global last_viewed_post_id
# Получение 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 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)
if not os.path.exists('last_post_id.txt'):
with open('last_post_id.txt', 'w') as f:
f.write('0')
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:
like_post(event, vk)
# Получение списка записей в группе
response = vk.wall.get(owner_id=-group_id, count=1)
last_post_id = response['items'][0]['id']
def check_new_posts(vk):
global last_viewed_post_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}")
while True:
try:
# Получаем информацию о сообществе, включая последний пост
group_info_response = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')
# Проверка наличия новой записи
if last_post_id != saved_post_id:
chime.success()
print(f"Новая запись! https://vk.com/wall{group_id}_{last_post_id}")
# Проверяем, успешно ли получены данные
if 'groups' in group_info_response and len(group_info_response['groups']) > 0:
group_info = group_info_response['groups'][0]
# Добавляем лайк и получаем ответ от API
likes_added = vk.likes.add(type='post', owner_id=-group_id, item_id=last_post_id)
# Получаем ID последнего поста
wall_info = group_info.get('wall')
if wall_info and 'from_id' in wall_info:
last_post_id = wall_info['from_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}")
# Проверяем, является ли последний пост новым
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)
# Задержка на 10 секунд
time.sleep(15)
# Добавляем задержку перед следующей проверкой
time.sleep(DELAY_BETWEEN_CHECKS)
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
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()

View File

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