Traffic Cardinal Traffic Cardinal написал 20.10.2022

Создаем страничный бот для дейтинга в VK: пошаговый гайд

Traffic Cardinal Traffic Cardinal написал 20.10.2022
9 мин
0
3708
Содержание

Бот-говорилка — идеальный способ собрать трафик для дейтинга. Ранее мы уже писали, как создать чат-бота с помощью сторонних сервисов.

banner banner

Кроме того, мы создавали аналогичный бот-говорилку для Telegram своими руками, без использования сторонних сервисов. Сегодня же мы адаптируем упомянутую выше говорилку под VK.

А заодно рассмотрим основные особенности процесса создания ботов для этой соцсети.

*Спойлер: готовый исходный код — в конце статьи.

Какие задачи решает бот

Бот-говорилка помогает решать такие задачи:

  • Прогрев потенциальных клиентов дейтинг-сервисов путем «общения» с ними.

  • Логирование вопросов собеседников для дальнейшего «обучения» бота.

  • Коммуникация с подписчиками групп и с клиентами в пабликах-витринах.

  • FAQ для магазинов и прочих площадок.

  • Повышение траста аккаунтов при фарме за счет активности в ЛС.

Перечисленными выше пунктами потенциал бота не ограничивается — его можно использовать везде, где не требуется моментальный импровизированный ответ на вопрос или фразу собеседника.

Принцип работы бота

Несмотря на то, что основной алгоритм работы бота построен на использовании довольно сложного уравнения Левенштейна, общая логика его работы проста:

  • Он «слушает» личные сообщения привязанного к нему профиля с помощью Longpoll, обрабатывая события в реальном времени.

  • При появлении нового сообщения он сравнивает его по расстоянию Левенштейна со словарем.

  • Исходя из содержимого словаря подбирается фраза, наиболее похожая на сообщение пользователя.

  • В ответ присылается сообщение, закрепленное в качестве ответа на ранее выбранную из словаря фразу.

  • Параллельно с этим сообщение пользователя и ответ бота записываются в лог, чтобы в дальнейшем можно было обучить бота ответам на фразы, которые он еще «не знает» (которых нет в словаре).

  • При получении вопроса-триггера бот делает вид, что ему неудобно общаться в VK, и предлагает продолжить общение на дейтинг-сайте.

При кажущейся сложности алгоритма, он занимает всего 49 строк кода. Из которых 11 — комментарии для понимания работы кода, а не исполняемые команды. Скачать исходный код чат-бота для VK можно будет в конце статьи.

Пара слов про ботов для VK

Прежде чем перейти к написанию кода, давайте остановимся на особенностях создания ботов для VK. Ранее мы уже создавали для Telegram аналогичный бот-говорилку, бот с кнопками для беттинга, бот-гороскоп для залива на амулеты и бота-диетолога для продвижения нутры. Однако в их основе лежали несколько иные принципы, так как все они были для Telegram.

Работа с VK отличается следующими моментами:

  • Абсолютно другой API-интерфейс.

  • Несколько способов обработки событий в реальном времени — BotsLongPoll API для ботов (групп), UserLongPoll API для страниц (в том числе страничных ботов), потоковый Streaming API, CallBack API для инициации сервером. И все они могут использоваться для работы ботов.

  • При работе с VK существуют токены с разными уровнями доступа. И если в Telegram токен вам выдает FatherBot, и ошибиться невозможно, то в случае с VK очень легко получить не тот токен.

  • Наличие незадекларированных инструментов — методов и функций, которые отсутствуют в официальной документации, но которые можно использовать (иногда их использование противоречит правилам VK).

При этом указанные в данном материале элементы — хостинг, логика и база данных могут быть абсолютно любыми. Все различия именно в четвертом элементе — в API.

Вся эта информация вам понадобится, если вы захотите выйти за рамки предложенного в статье решения. Впрочем, перейдем к делу!

Пошаговая инструкция, как создать страничный бот для дейтинга VK

Для начала нам нужно получить токен. Имейте в виду, что токен предоставит полный доступ к странице! Или к паблику, если речь будет идти о токенах для сообществ. Настоятельно рекомендуем использовать для тестов ненужную страницу. В особенности если вы воспользуетесь дешевым или бесплатным сервером.

Писать код мы будем на python, а в качестве сервера использовать бесплатную платформу pythonanywhere. Импровизированной базой данных будет выступать обычный txt-файл. Для нашего бота этого более чем достаточно.

Итак:

  1. Регистрируемся на pythonanywhere.
  2. Запускаем Bash-консоль. Ждем, пока сервер загрузится и настроится.

Ждем прогрузки сервера

Сервер готов к работе

  1. Апдейтим сервер для работы с VK API, введя в консоль:

pip3.9 install vk_api

Процесс загрузки модуля для работы с API-интерфейсом VK

  1. Устанавливаем модуль для подбора ответов по словарю — Fuzzy Wuzzy. Для этого вводим:

pip3.9 install fuzzywuzzy

Процесс загрузки модуля для перебора словаря

  1. Устанавливаем модуль метрики Левенштейна, необходимый для корректной работы модуля Fuzzy Wuzzy. Для этого вводим:

pip3.9 install python-Levenshtein

Процесс загрузки модуля для работы метрики Левенштейна

  1. Создаем любым текстовым редактором файл bot.py и копируем в него следующий код:

# Импортируем библиотеку vk_api

import vk_api

import os

# Достаём из неё longpoll

from vk_api.longpoll import VkLongPoll, VkEventType

from fuzzywuzzy import fuzz

# Создаём переменную для удобства в которой хранится наш токен от группы

token="ТОКЕН СЮДА" # В ковычки вставляем аккуратно наш ранее взятый из группы токен.

# Подключаем токен и longpoll

bh = vk_api.VkApi(token = token)

give = bh.get_api()

longpoll = VkLongPoll(bh)

# Создадим функцию для ответа на сообщения в лс группы

def blasthack(id, text):

bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})

# Загружаем список фраз и ответов в массив

mas=[]

if os.path.exists('slovar.txt'):

f=open('slovar.txt', 'r', encoding='UTF-8')

for x in f:

if(len(x.strip()) > 2):

mas.append(x.strip().lower())

f.close()

# Слушаем longpoll(Сообщения)

for event in longpoll.listen():

if event.type == VkEventType.MESSAGE_NEW:

# Чтобы наш бот не слышал и не отвечал на самого себя

if event.to_me:

# Для того чтобы бот читал все с маленьких букв

message = event.text.lower()

# Получаем id пользователя

id = event.user_id

if os.path.exists('slovar.txt'):

a = 0

n = 0

nn = 0

for q in mas:

if('u: ' in q):

# С помощью fuzzywuzzy получаем, насколько похожи две строки

aa=(fuzz.token_sort_ratio(q.replace('u: ',''), message))

if(aa > a and aa!= a):

a = aa

nn = n

n = n + 1

s = mas[nn + 1]

blasthack(id, s)

f=open('log.txt', 'a', encoding='UTF-8')

f.write('u: ' + message + '\n' + s +'\n')

f.close()

  1. Заменяем фразу “ВАШ ТОКЕН” на ранее полученный токен.
  2. Сохраняем файл bot.py.

Загрузка скрипта на сервер

  1. Создаем любым текстовым редактором файл slovar.txt и копируем в него шаблоны фраз и ответов следующей структуры:

U: Фраза пользователя

Ответ

Возможный вариант фраз-шаблонов словаря

  1. Сохраняем файл slovar.txt.

Загрузка словаря на сервер

  1. Загружаем файлы на сервер, проверяем, что они корректно загрузились.

Оба файла должны быть загружены. Если какого-то нет — загрузите заново.

  1. Запускаем обработку скрипта bot.py.
  1. Тестируем работоспособность бота.

Бот работает — дальнейшая реалистичность зависит лишь от качества и глубины заполнения словаря.

  1. Обратите внимание, что создался файл log.txt — в нем хранится история переписки пользователя с ботами. С ее помощью можно обучать бота — нужно лишь подставить вопросы пользователей и ответы на них в файл slovar.txt.

После «общения» с ботом появился файл с логами

Исходный код бота-говорилки и словарь фраз:

Ссылка на скачивание исходного кода

Ссылка на скачивание словаря

Подводя итоги

Как видите, создание бота-говорилки для VK ненамного сложнее, чем создание аналогичного бота для Telegram. Но есть свои нюансы. Успехов!

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!