Как сделать из страницы бота ВК

Недавно на одном проекте мне пришлось столкнуться с ботом вк, который «живёт» в сообщениях группы. До этого я имел самый разный опыт создания ботов из личных страничек. Для того, чтобы бот мог нормально отвечать на сообщения приходилось делать самые разные извращения с кроном, таймерами, «запоминанием» сообщений и другими разными ужасами.
Как же я удивился, когда начав курить VK API групп касаемо сообщений, я увидел это чудо — Callback API.

Для нетерпеливых или любящих разбираться со всем самостоятельно в конце есть готовый пример.

Статья рассчитана не для совсем новичков и я не стал её сильно затягивать, специально опустив разжёвывание совсем очевидных вещей, иначе бы это была бы очень огромная статья. Тема написания ботов в целом так-то не очень новичковая тема.

Для тех кто не знает, что это, расскажу кратко.
При помощи этой фишки вк сам, автоматически, отправляет запросы в формате JSON куда мы укажем сами.
О формате JSON я писал немного инфы в статье про создание авторизации через вк

Бот для страницы ВКонтакте (не для группы)

Так вот, в этом callback запросе вк может уведомлять обо всём: новых сообщениях группы, исходящих от группы сообщениях, видео, аудио, комментариях, новых подписчиках и так далее. И мы, прочитав этот запрос, можем решить, как на этот запрос реагировать.
Прямо как платёжные системы. Магия.

Давайте по порядку. Для того, чтобы воспользоваться callback api для создания бота или ещё чего-бы то ни было, нужно:

Сначала, конечно же, создать группу.
Открыть раздел «Управление сообществом», в котором справа будет вот такое меню:

Выбираем работу с API, где и имеем все настройки.

В первую очередь нужно создать API ключ, который сразу желательно где-то записать, потому что для его повторного отображения нужно будет получать смску на телефон.
Наверху водится вкладка с Callback API.

Откройте её и посмотрите, что там есть. Сразу можете указать в типах событий «Входящее сообщение», остальные пока не трогаем, иначе они будут без нужды напрягать сервер как вк, так и Ваш.

Предлагаю сделать вот что:
Пусть бот будет отвечать на сообщения этим же сообщением, которое ему прислали, только задом-наперёд, ахах

Для начала давайте слепим два файла. callback.php и vk.class.php. Класс нужен чисто для удобства, чтобы не громоздить большую кучу кода в одном файлике. Сделаем всё аккуратно

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

Перед использованием самого каллбек апи придётся так же для начала подтвердить свой каллбек-скрипт, отдав вк нужную строку. Все запросы от каллбека будут лететь в формате JSON (уже говорил) и вк как бы сам показывает, как они будут выглядеть. Первый из них, это confirmation, который будет смотреться примерно так:

Еще по теме:  Как лить трафик с Вконтакте

Идём теперь в наш callback.php, в котором для начала нужно получить запрос от вк и проверить, что же там пришло и сразу это обработать. О структуре запроса отправляемого от вк можно узнать из официальной документации вк

БОТ VK ДЛЯ ЛС И БЕСЕДЫ В ОДНОМ ФАЙЛЕ ЗА 7 МИНУТ


Ниже приведён сразу полный код файла callback.php, который будет укомплектован тонной комментариев )
Весь код будет максимально упрощен, во многих местах на каком-то большом и серьёзном проекте так лучше не делать ) Нужны будут как минимум обработчики ошибок и так далее, которые вк может вполне себе вернуть. Так же желательно будет использовать секретный ключ и всякое-разное

$body = file_get_contents ( ‘php://input’ ); //Получаем в $body json строку
$arr = json_decode( $body , true); //Разбираем json запрос на массив в переменную $arr

if ( $arr [ ‘type’ ] == ‘confirmation’ ) < //Если нам пришел запрос на подтверждение callback скрипта, то

exit ( «xxxxxxxx» ); //отдаём в ответ свой код подтверждения выданный вк и останавливаем скрипт, дальше ему ничего не требуется

//Если скрипт выполняется дальше, значит это не confirmation, а одно из уведомлений.
//Т.к. на данном этапе мы обрабатываем только входящее письмо, значит это входящее письмо
if ( $arr [ ‘type’ ] == ‘message_new’ ) < //Проверим на всякий случай, точно ли это входящее письмо

function cir_strrev( $stroka )< //Так как функция strrev не умеет нормально переворачивать кириллицу, нужен костыль через массив. Создадим функцию

Источник: evilinside.ru

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

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

preview

17 минут на прочтение статьи

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

preview

17 минут на прочтение статьи

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

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

  • Прогрев потенциальных клиентов дейтинг-сервисов путем «общения» с ними.
  • Логирование вопросов собеседников для дальнейшего «обучения» бота.
  • Коммуникация с подписчиками групп и с клиентами в пабликах-витринах.
  • 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. Для этого вводим:
Еще по теме:  Умная колонка капсула мини с марусей vk отзывы

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):

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

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. Но есть свои нюансы. Успехов!

Источник: trafficcardinal.com

Как сделать из страницы бота вк

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.

B правой части каждого сообщения есть стрелки ⇧ и ⇩ . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.

Аудит Информационной Безопасности от Кодебай Пентест

Кодебай Пентест — одна из сильнейших Red Team в RU сегменте. Команда профессионалов, специализирующаяся на аудите информационных систем и тестировании на проникновение. Мы предлагаем: Аудит безопасности веб-сайта компании, Аудит безопасности внешнего периметра, Аудит безопасности веб-приложения, Аудит безопасности внутренней корпоративной сети, Проверка ИБ-грамотности сотрудников, Анализ кода ПО, Аудит Wi-Fi и СКУД, Выявление уязвимостей ПО серверов и рабочих станций, Пентест инфраструктуры методом черного ящика. Узнать подробнее . *Только для юрлиц

Источник: codeby.net

Рейтинг
( Пока оценок нет )
Загрузка ...