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

114
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
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)
# Получение id группы
group = vk.groups.getById(group_id=group_id)
group_id = group[0]['id']
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)
def check_new_posts(vk):
global last_viewed_post_id
# Автолайк
count = 1 # количество постов для получения
posts = vk.wall.get(domain=group_id, count=count)['items']
i = 1
# Основной цикл программы
while True:
try:
# Получаем информацию о сообществе, включая последний пост
group_info_response = vk.groups.getById(group_id=TARGET_GROUP_ID, fields='wall')
if not os.path.exists('last_post_id.txt'):
with open('last_post_id.txt', 'w') as f:
f.write('0')
# Проверяем, успешно ли получены данные
if 'groups' in group_info_response and len(group_info_response['groups']) > 0:
group_info = group_info_response['groups'][0]
# Получение списка записей в группе
response = vk.wall.get(owner_id=-group_id, count=1)
last_post_id = response['items'][0]['id']
# Получаем ID последнего поста
wall_info = group_info.get('wall')
if wall_info and 'from_id' in wall_info:
last_post_id = wall_info['from_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 > 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)
# Проверка наличия новой записи
if last_post_id != saved_post_id:
chime.success()
print(f"Новая запись! https://vk.com/wall{group_id}_{last_post_id}")
# Добавляем задержку перед следующей проверкой
time.sleep(DELAY_BETWEEN_CHECKS)
# Добавляем лайк и получаем ответ от 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}")
def main():
vk_session = vk_api.VkApi(token=ACCESS_TOKEN)
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
# Задержка на 10 секунд
time.sleep(15)
# Запуск потока для проверки новых постов
new_posts_thread = threading.Thread(target=check_new_posts, args=(vk,))
new_posts_thread.start()
except vk_api.exceptions.ApiError as error:
print(f"Ошибка API: {error}")
time.sleep(15)
# Обработка событий от longpoll
process_events(vk, longpoll)
except Exception as error:
print(f"Неизвестная ошибка: {error}")
time.sleep(15)
i = i + 1
if __name__ == '__main__':
main()

View File

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