Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b3fd5ee960 | |||
| 4856db6dba | |||
| 4832b1d6c3 | |||
| 32ff77c4f8 | |||
| 4fb0b34c56 | |||
| 1aabc374a0 | |||
| 2e08f03424 | |||
| f774aaf50c | |||
| 150339d5e5 | |||
| d6099158d6 | |||
| 280fb5643c | |||
| a4d576c8b4 | |||
| 7aba562ad1 |
31
README.md
Normal file
31
README.md
Normal 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>
|
||||
@@ -1 +0,0 @@
|
||||
303367
|
||||
122
main.py
122
main.py
@@ -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()
|
||||
@@ -1,6 +1 @@
|
||||
vk_api
|
||||
time
|
||||
os
|
||||
chime
|
||||
os.path
|
||||
pickle
|
||||
Reference in New Issue
Block a user