Скрипт для бота для вконтакте – Сложный бот — VK Scripts

Как сделать разговорного бота для Вконтакте на PHP

Данная статья — продолжение серии моих статей о том, как создается ИИ для профиля VK.COM

Немного времени назад я опубликовал статью на Хабре и из того, что получилось — могу вывести несколько теорий относительно Хабрааудитории:
1. Хабровчане не любят PHP
2. Хабровчане очень сильно не любят PHP
3. Хабра не прощает недописанный код

А теперь, собственно, сама статья:

Как-то в один прекрасный день меня осенила мысль о том, что было бы неплохо, если бы такие повседневные задачи как постинг и поддержание активности аккаунта в какой-либо социальной сети выполнял не человек, а простой разговорный бот. Тем более при «ботнете» в несколько сотен аккаунтов выполнять задачу с помощью одного человека нецелесообразно и почти невозможно. Поэтому возникла идея написать разговорного бота средствами, которые лучше всего мне были известны. Я решил сделать бота на PHP.

Начать, как вы уже догадались, нужно было с поиска баз для ответов бота и элементарного технического задания, которое помогло бы сделать все быстро и с минимальным количеством костылей (у меня без костылей не получилось).

Немного раньше я познакомился с одним интересным проектом от компании «Наносемантика», которая занимается подобными задачами и создает, вроде, комерческих ботов-саппортов и прочее. Этот проект — iii.ru. На сайте проекта можно создать бота и получить его flash-версию для вставки на сайте. API у них не было, пришлось декомпилировать swf.

Первое, что пришло ко мне в голову, когда я открыл декомпилированный код SWF файла — где теперь найти точку вывода ответов и каким образом это все перевернуть в сторону своей задумки. Удивлению не было предела, когда я увидел, что все запросы и ответы шифруются с помощью XOR + Base64, а ключ для расшифровки был в начале кода. Зачем тогда криптовать?

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

Было создано следующие файлы:
— index.php (работает как клиент, обновляющий с помощью jquery файл с подгрузкой пришедших сообщений и последующим ответом)
— autoload.php (собственно, тот файл, который принимает и отвечает)
— showmeid.php (файл, который создает новый ID чата, если собеседник впервые общается с ботом)

— config.php (коннект к базе данных с клиентами бота)
— classes.php (классы для работы с ботом)

  1. Импортируйте dump.sql в свою базу данных
  2. Получите «долгоиграющий» access token для работы с VK API с помощью ссылки — получить token
  3. Переименуйте config.sample.php в config.php предварительно изменив данные для коннекта к базе данных
  4. Пользуйтесь запустив index.php

Итак, прошу знакомиться — Лариса Чернышова

А также исходники на GitHub.

UPD: Если бот не отвечает — значит блокируется отправка сообщения просьбой ввести капчу.

Похожее

mew.su

Русский чат бот для Вконтакте на Powershell скрипте

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

Теперь пришла вторая беда: куча незнакомых людей пытаются втянуть меня в политические дискуссии на тему Украина-Россия-США, которые мне абсолютно не интересны.

Посему захотелось возродить тот автоответчик - пускай он дискуссирует о визитках Яроша, великом комбинаторе Бендере, укропах и американцах, которые хотят нас поссорить. Зачем мне на эту ерунду отвлекаться? Лучше уж верну в строй автоответчик, это более веселое занятие =) Только вот захотелось допилить в нем кое-что, для удобства. И обойтись без установки delphi, да и qip не хотел устанавливать. Потому переписал его на Powershell-скрипте.

Кстати о пользе скрипта: вот пишу сейчас эту запись, а параллельно со скриптом какая-то девушка общается, она уже пять часов выпрашивает у моего скрипта скинуть деньги на телефон, при этом скрипт хитер - и телефон получил, и деньги пообещал скинуть (только не сейчас),  и условие поставил: скинет если она, девушка, будет себя хорошо вести. Вот и общаются уже так 5 часов. Собеседница пытается выяснить когда именно и сколько денег скрипт собирается ей скинуть, ну и общается с ним за жизнь, чтобы его не обидеть =)

Помимо самого скрипта нам понадобится:

  • База вопросов-ответов - текстовый файл такого же формата, как и в боте реализованном через QIP плагин. В скрипте используется тот же формат базы. Качайте архивы по ссылкам: раз или два и скопируйте в них файл reg.txt
  • Сгенерировать токен - ключ, благодаря которому вконтакте поймет что скрипт, это Вы. Для этого, в свою очередь, нужно:
    • Создать во вконтакте свое standalone-приложение и скопировать его id.

С базой вопросов-ответов все понятно, идете по ссылкам и качаете одну из тех баз, которыми люди поделились. Рекомендую базу совершенствовать, чем больше в ней будет вопросов и более продуманной ее структура - тем более человеческие диалоги будут получаться. Своей базой я пока не готов делится =) Может потом реализую на сайте api через которое можно будет посылать вопрос и получать ответ из базы.

Генерация токена

По адресу vk.com/editapp?act=create создаем standalone-приложение (под которым будет выступать этот скрипт), название можете вписать любое. При создании приложения вконтакте пошлет Вам на телефон код, который нужно будет ввести.

Далее в созданном приложении переходим на вкладку "настройки" и запоминаем "ID приложения" - оно нам понадобится для генерации токена.

Честно говоря Вам не обязательно создавать свое приложение, достаточно взять ID уже любого, созданного кем угодно приложения. Но есть "Но":

  • Оно должно быть standalone-типа: отправка сообщений доступно только Standalone-приложениям.
  • Во вконтакте есть ограничение по количеству обращений в секунду с какого-либо приложения. И чтобы несколько пользователей используя одно и то же приложение не уперлось в это ограничение, лучше создать свое приложение.
  • Этому приложению будут выданы те права которые вписаны в ссылке получения токена - будьте аккуратны. Лучше создать свое приложение, а не предоставлять чужому какие-либо опасные права

Получили ID приложения? Идем дальше.

Переходим в браузере по такому адресу:

https://oauth.vk.com/authorize?client_id=ТутIDПриложения&scope=offline,messages&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.24&response_type=token

Вместо "ТутIDПриложения" указываем ID своего приложения.

"scope=offline,messages" - говорит о том, что токену будет предоставлен:

  • оффлайновый доступ (срок действия токена будет бесконечный, не нужно будет раз в сутки получать новый)
  • доступ к сообщениям

При переходе по указанному адресу у вас запросят права на:

  • Доступ к сообщениям (мы хотим получать и отправлять сообщения )
  • Личной информации (всегда запрашивается)
  • В любое время (так как токен бессрочный)

Разрешаем.

После чего вы попадете на страницу с текстом:

Пожалуйста, не копируйте данные из адресной строки для сторонних сайтов. Таким образом Вы можете потерять доступ к Вашему аккаунту.

А в адресной строке браузера будет приблизительно такой адрес:

https://oauth.vk.com/blank.html#access_token=6fd83efcffc00be12345678901234567890123456789a23b7b73a4dc3e7c64ec5914768c8dbddd2d461af&expires_in=0&user_id=24552345

Токен это то, что начинается после "access_token=" и заканчивается перед "&expires_in=". Его и вставляем в скрипт.

Powershell скрипт "Русский чат бот для вконтакте":

#скрипт автответчика для Вконтакте
#Автор: elims.org.ua

#Данные которые нужно указать:
$users_id = 2141,1234234,134156,4525 #id людей, которых игнорировать, то есть с ними скрипт не будет общаться
$base_file_path = "C:\Dropbox\QIPBot\reg.txt" #указываем где находится файл с базой вопросов-ответов 
$token = "6fd83efcffc00be12345678901234567890123456789a23b7b73a4dc3e7c64ec5914768c8dbddd2d461af" #указываем токен

function get_message_base { #получаем и конвертируем базу вопросов ответов 
 $message_base_file = Get-Content $base_file_path 
 $global:file_modify = [int][double]::Parse($(Get-Date -date (Get-Item C:\Dropbox\QIPBot\reg.txt).LastWriteTime.ToUniversalTime() -uformat %s)) #дата изменения файла в юникс формате
 $global:message_base = @{} #создаем пустой ассоциативный массив
 $global:message_base.matches = @{}
 $global:message_base.answers = @{}
 $i = 0
 foreach ($line in $message_base_file) { #для каждой строки из файла 
 if ($line -match '^\^.*\$$') { #если нашли правило 
 $global:message_base.matches[$i] = $line #записываем правило в масив
 $line_j = $line_i+2 #номер строки с которой начинаются ответы на правило 
 $answers_i = 0 #количество ответов на правило
 $answers = @{} #масив из ответов на определенный вопрос
 do { #записываем ответы на правило в отдельный масив
 $answers[$answers_i] = $message_base_file[$line_j] #записываем ответы на определенный вопрос в масив
 $answers_i++
 $line_j++
 } while (-not($message_base_file[$line_j+1] -match '^\^.*\$$')-and($line_j -le $message_base_file.count)) 
 $global:message_base.answers[$i] = $answers #записываем масив ответов на определенный вопрос в общий масив ответов
 $i++ 
 }
 $line_i++ #номер текущей строки в файле
 } 
}

get_message_base
#получаем id последнего сообщения, на все последующие нужно отвечать:
$uri = "https://api.vk.com/method/messages.get?count=1&v=5.24&access_token="+$token
$request = Invoke-WebRequest -Uri $uri 
$response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив
$message_id_last = $response_array.response.items[0].id 
"id последнего сообщения: " + $message_id_last

#Бесконечный цикл, в котором происходит общение:
do {
 $uri = "https://api.vk.com/method/messages.get?count=10&v=5.24&access_token="+$token
 $request = Invoke-WebRequest -Uri $uri #получили последние 10 входящих сообщений
 $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив
 $message_id = $response_array.response.items
 $items_i = $response_array.response.items.count
 do { #идем в обратном порядке по сообщениям
  $items_i-- 
  $item = $response_array.response.items[$items_i]
  #если человек не среди исключенных и сообщение имеет id больше того, после которого нужно отвечать
  if (-not($users_id -contains $item.user_id )-and($item.id -gt $message_id_last)) { 
   $i = 0
   do { #для каждого правила
    $i++ 
    if ($item.body -match $message_base.matches[$i]) { #проверяем подпадает ли сообщение под правило
     "Вопрос от " + $item.user_id + " id-сообщения: " + $item.id + " : " + $item.body 
     $maximum = $message_base.answers[$i].count - 1
     if ($maximum -gt 0) {$answer_number = Get-Random -minimum 0 -maximum $maximum}else{$answer_number=0}
     $answer = $message_base.answers[$i][$answer_number]
     $time_sleep = $answer.length / 5 #смотрим сколько символов в ответе и делим на 5 для имитации скорости печати 5 символов в секунду
     $time_sleep_i = 0
     "Время общего сна: " + $time_sleep 
     do { #задержка для имитирования скорости печати, раз в 10 секунд посылаем запрос, который говорит что идет печать
      $uri = "https://api.vk.com/method/messages.setActivity?user_id=" + $item.user_id + "&type=typing&v=5.24&access_token="+$token #посылаем процесс набора текста
      $request = Invoke-WebRequest -Uri $uri
      if ($time_sleep-$time_sleep_i -ge 10) { 
       "спим 10 секунд"
       Start-Sleep -s 10 
      } 
      else { 
       "спим секунд: " + ($time_sleep-$time_sleep_i)
        Start-Sleep -s ($time_sleep-$time_sleep_i) 
      }
      $time_sleep_i = $time_sleep_i + 10
     } while ($time_sleep_i -lt $time_sleep) 
     "Ответ: $i из " + $message_base.matches.count + " " + $answer 
     if ($i -eq ($message_base.matches.count - 1)) { #сохраняем вопросы на которые не были найдены ответы и подпали под общее правило
      $item.body | Out-File -Append "C:\Temp\questions-without-answers.txt" -Encoding UTF8 #ответы на эти вопросы можно придумать и добавить в базу
     } 
     $i = -1 #ответ найден, прерываем дальнейший поиск маски
     $message_id_last = $item.id #обновляем указатель на последнее отвеченное сообщение
     #посылаем ответ
     $uri = "https://api.vk.com/method/messages.send?user_id="+$item.user_id+"&message="+$answer+"&v=5.24&access_token="+$token
     $request = Invoke-WebRequest -Uri $uri 
    }
   } while (($i -le $message_base.matches.count-2)-and($i -ne -1))
  } 
 } while ($items_i -ge 0 ) 
 $file_modify_check = [int][double]::Parse($(Get-Date -date (Get-Item $base_file_path).LastWriteTime.ToUniversalTime() -uformat %s)) #unix-время последней модификации файла вопросов-ответов
 if ($file_modify_check -gt $file_modify) {get_message_base} #если база вопросов ответов изменялась, то снова ее считываем
 $time = [int][double]::Parse($(Get-Date -date (get-date).ToUniversalTime()-uformat %s)) #берем текущее время в юникс-формате и переводит в целое число
 write-host("$time Следующий запрос будет через 5 секунды. Последнее сообщение $message_id_last")
 Start-Sleep -s 5 

} while ( 1 -eq 1) #бесконечный цикл

В самом начале скрипта, после строки "#Данные которые нужно указать:" указываем свои данные (вместо моих): id-людей с которыми автоответчик не должен общаться, путь к файлу с вопросами-ответами и токен.

Запускаем из командной строки Powershell-скрипт и любуемся его работой =)

P.S.: На всякий случай предупрежу - пользуйтесь аккуратно, без злоупотреблений, все-таки ботоводство нигде не приветствуется.

Понравилось? =) Поделись с друзьями:

elims.org.ua

50 скриптов для ВКонтакте

50 скриптов для ВКонтакте на все случаи жизни. В архив включены такие скрипты для ВК как:

 

Музыка под постом.

 

Редактирует дату дня рождения, типо каждый день день рождение.

 

Автостатус в группу)

 

Пост с курсами валют, с точным временем, с кол-вом диалогов и т.д.

 

Переводит подпищиков в друзья.

 

Отписываемся от всех.

 

Вечный онлайн.

 

Меняет название беседы на время.

 

Чистка сообщений.

 

Заменяет родной город на факт.

 

Пост с временем.

 

Рассылка заявок в друзья.

 

В названии группы будет время и погода.

 

Сохраняет все вложенные картинки в сообщениях.

 

Флуд в обсуждениях.

 

Автоответчик.

 

Флуд в беседку.

 

Пост с фактом и приклеплённым фото.

 

Накрутка сообщений методом создания бесед.

 

Пост с фактом и приклеплённым фото в группу.

 

Те, кто удалил вас из друзей попадает в чс.

 

Выберает того, кто лайкает записи в группе.

 

Флуд фотографиями в альбоме.

 

Флуд аудиозаписями.

 

Слитый скрипт LikeTime.

 

Автопортрет с смайликов.

 

Уведомление о капчи группы.

 

Флуд на стене друга.

 

Автоава для группы.

 

Автоприём людей в закритые группы.

 

Автопост \»День рождение через\»

 

Накрутка отметки фотографий.

 

Шкурогенератор.

 

Выбирает счастливчика в коментариях.

 

Шкурогенератор без уведомлений.

 

Выбирает счастливчика в коментариях без уведомлений.

 

Если человек отписался, то перед чс ему отправит сообщение.

 

Накрутка сохранёнок.

 

Выход из групп.

 

Поздравит ваших друзей с Новым Годом ровно в 0:00

 

Проверка токена на валид.

 

10 популярных песен в коменты.

 

Добавляет популярные треки в аудиозаписи.

 

Флуд на стену с многих акков.

 

Чистит сохраненки.

 

Автоматом добавляет в беседу, если в лс написали\»#addchatuser\»

 

Скрипт пиара с RUCAPTCHA.

 

Рандомный коммент под аву.

 

Скрипт пиара.

 

Топовая визитка

50 скриптов для ВКонтакте на все случаи жизни. В архив включены такие скрипты для ВК как:

 

Музыка под постом.

 

Редактирует дату дня рождения, типо каждый день день рождение.

 

Автостатус в группу)

 

Пост с курсами валют, с точным временем, с кол-вом диалогов и т.д.

 

Переводит подпищиков в друзья.

 

Отписываемся от всех.

 

Вечный онлайн.

 

Меняет название беседы на время.

 

Чистка сообщений.

 

Заменяет родной город на факт.

 

Пост с временем.

 

Рассылка заявок в друзья.

 

В названии группы будет время и погода.

 

Сохраняет все вложенные картинки в сообщениях.

 

Флуд в обсуждениях.

 

Автоответчик.

 

Флуд в беседку.

 

Пост с фактом и приклеплённым фото.

 

Накрутка сообщений методом создания бесед.

 

Пост с фактом и приклеплённым фото в группу.

 

Те, кто удалил вас из друзей попадает в чс.

 

Выберает того, кто лайкает записи в группе.

 

Флуд фотографиями в альбоме.

 

Флуд аудиозаписями.

 

Слитый скрипт LikeTime.

 

Автопортрет с смайликов.

 

Уведомление о капчи группы.

 

Флуд на стене друга.

 

Автоава для группы.

 

Автоприём людей в закритые группы.

 

Автопост \»День рождение через\»

 

Накрутка отметки фотографий.

 

Шкурогенератор.

 

Выбирает счастливчика в коментариях.

 

Шкурогенератор без уведомлений.

 

Выбирает счастливчика в коментариях без уведомлений.

 

Если человек отписался, то перед чс ему отправит сообщение.

 

Накрутка сохранёнок.

 

Выход из групп.

 

Поздравит ваших друзей с Новым Годом ровно в 0:00

 

Проверка токена на валид.

 

10 популярных песен в коменты.

 

Добавляет популярные треки в аудиозаписи.

 

Флуд на стену с многих акков.

 

Чистит сохраненки.

 

Автоматом добавляет в беседу, если в лс написали\»#addchatuser\»

 

Скрипт пиара с RUCAPTCHA.

 

Рандомный коммент под аву.

 

Скрипт пиара.

 

Топовая визитка

 

Скачать

v-zlom.cc

Скрипт Бота Для Вк

Скрипт бот для игры Небеса

Скачать Clickermann: crapware.aidf.org/page/clickermann Скачать скрипт: www.catcut.net/KHP5 Брут аккаунт 8ур: catcut.net/LHP5 Скрипт Бот для...

Hace un año

Капиталист

Добро пожаловать на канал Viki Meyson. У меня ты найдешь много интересных видео о скриптах и багах, накрутке и...

Freebitcoin - рабочий бот скрипт

Регистрация на freebitcoin: goo.gl/wHiYe5 FreeBitcoin обновлённый БОТ v 4.1: gestyy.com/qXsRqk FreeBitcoin обновлённый БОТ v 4.1ставка...

Hace 2 años

Спам бот для сайта vk.com

Спам бот,парсер,поиск открытых групп по тегам. С помощью данного бота вы можете прорекламировать свою групп...

Hace 5 años

Полезности #3 Бот VK

Команды vk.com/doc212188840_334328536?hash=4d548933eabb72f216&dl=40beedc69bfbdc07bb Чат бот vk.com/id283117679.

Hace 3 años

esfilms.net

Скрипт Бота ВК - Обсуждение программ и сервисов💡

Перейти к содержимому

Форум ZiSMO.biz


VkJust - программа для продвижения ВКонтакте
  • Вход
  • Регистрация
  • Забыли?
  • Войти через:
  • Главная
  • Свежие темы
  • Спросить
  • Новости zismo
  • Магазин
  • Правила
  • Заходите в чат
  • Поиск
  • Больше
  •  
  1. Форум ZiSMO.biz
  2. → Популярное на форуме
  3. → Обсуждение программ и сервисов
  4. → Скрипт Бота ВК

zismo.biz

0 0 vote
Article Rating
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments
Закрыть
Menu