Гайд AHK + API VK

PromoAcc

Потрачен
10
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно ли как-то перенаправить отправку сообщений в беседу ВК, а не в личные сообщения ВК?
 

degrando

Известный
Автор темы
362
127
Можно ли как-то перенаправить отправку сообщений в беседу ВК, а не в личные сообщения ВК?
Вместо chat_id юзаешь peer_id, вот пример:
AutoHotKey:
vk_send(textvk)
{
global token:=""
global vkid:="2000000001" ; 2000000000 + id беседы(для группы вк)
global proxy := "https://vk-api-proxy.xtrafrancyz.net/_/"
text := RegExReplace(text, "%", "%25") ; first string
text := RegExReplace(text, "\+", "%2B")
text := RegExReplace(text, "#", "%23")
text := RegExReplace(text, "&", "%26")
text := RegExReplace(text, "`n", "%0A")
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", proxy "api.vk.com/method/messages.send?peer_id=" vkid "&message=" textvk "&v=5.52&access_token=" token)
try
HTTP.Send()
return
}
f2::
vk_send("test")
return
 

PromoAcc

Потрачен
10
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вместо chat_id юзаешь peer_id, вот пример:
AutoHotKey:
vk_send(textvk)
{
global token:=""
global vkid:="2000000001" ; 2000000000 + id беседы(для группы вк)
global proxy := "https://vk-api-proxy.xtrafrancyz.net/_/"
text := RegExReplace(text, "%", "%25") ; first string
text := RegExReplace(text, "\+", "%2B")
text := RegExReplace(text, "#", "%23")
text := RegExReplace(text, "&", "%26")
text := RegExReplace(text, "`n", "%0A")
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", proxy "api.vk.com/method/messages.send?peer_id=" vkid "&message=" textvk "&v=5.52&access_token=" token)
try
HTTP.Send()
return
}
f2::
vk_send("test")
return
Спасибо.
 
Последнее редактирование:

degrando

Известный
Автор темы
362
127

NOOBPAndA

Участник
101
12
Как сделат что б при нахождении определенного слова в msgbox что то писалось ( допустим функция ищет сообщение "Привет" и нахождения в msgbox выводит что мне пришло сообщение)
 

v413ry4nk4

Участник
22
7
На данный момент минимальная версия API 5.90, и в качестве обязательного параметра random_id (целое число от -214783648 до 214783648)
 
  • Нравится
Реакции: degrando

Pizduk2277

Активный
292
33
Короче, я не самый лучший гайдер, но таких гайдов именно с ахк я не нашел.
В общем, вырезали из Lani Soft Report функции для отправки и чтения сообщений.
Перейдем же к гайду.

Создание и настройка группы ВК:
Первое что нам необходимо сделать - создать группу ВК, надеюсь все знают как это делается.
Далее идем в настройки группы и в пункте "Сообщения" и включаем их.
После в пункте настройки выбираем подпункт "Работа с API".
1P9Tvr2.png
Жмем на кнопку "Создать Ключ", ставим разрешение на доступ к сообщениям сообщества и нажимаем "Создать"
ferYfwo.png
После подтверждаем создание ключа через номер или телефон, который привязан к ВК.
После подтверждения вы увидите ключ и его права, ключ необходимо сохранить или записать.
Номер страницы:
Далее нам необходимо узнать свой номер страницы, узнать его можно через настройки нажав в пункте "адрес страницы" кнопку "Изменить" и вы увидите ваш адрес страницы его тоже записываем.
V3ppB6K.png
АХК:
Создаем новый .ahk скрипт и заходим в его редактирование.
Нам нужно добавить 2 функции:
Функция для отправки сообщения человеку:
AutoHotKey:
vk_send(textvk)
{
text := RegExReplace(text, "%", "%25") ; first string
text := RegExReplace(text, "\+", "%2B")
text := RegExReplace(text, "#", "%23")
text := RegExReplace(text, "&", "%26")
text := RegExReplace(text, "`n", "%0A")
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", proxy "api.vk.com/method/messages.send?user_id=" vkid "&message=" textvk "&v=5.52&access_token=" token)
try
HTTP.Send()
return
}
Функция для чтения сообщений от человека:
AutoHotKey:
vk_get()
{
ComObjError(false)
HTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HTTP.Open("POST", proxy "api.vk.com/method/messages.getHistory?count=1&user_id=" vkid "&access_token=" token "&v=5.85", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")
HTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
HTTP.Send()
HTTP.WaitForResponse()
jsontext := % HTTP.ResponseText
JSONvar =
(LTrim Join
%jsontext%
)

htmldoc := ComObjCreate("htmlfile")
Script := htmldoc.Script
Script.execScript(" ", "JScript")

oJSONvar := Script.eval("(" . JSONvar . ")")
text := % oJSONvar.response.items.0.text
date := % oJSONvar.response.items.0.date
from_id := % oJSONvar.response.items.0.from_id
fwd_messages_0 := % oJSONvar.response.items.0.fwd_messages.0.text
return Object("text", text, "date", round(date), "id", from_id, "replyText", fwd_messages_0)
}
Добавляем их в начало кода и теперь нам пригодятся данные которые мы добыли в ВК.
В самое начало кода прописываем 3 переменные -
AutoHotKey:
global vkid := "ваш id"
global token := "ваш ключ"
global proxy := "https://vk-api-proxy.xtrafrancyz.net/_/"
Заполняем сови данные - ключ, который мы взяли из группы и ваш id Вконтакте.
Перейдем к использованию функций.
vk_send:
Для отправки сообщения человеку необходимо использовать функцию vk_send()
Например:
AutoHotKey:
global vkid :="240193106"
global vktoken:="5169802827b8c1d4fe0980f16209e94ab590de0b3fdc7262ce614fd0a02008d58dfe4929542f72cb98b74"
global proxy := "https://vk-api-proxy.xtrafrancyz.net/_/"
vk_send(text)
{
text := RegExReplace(text, "%", "%25") ; first string
text := RegExReplace(text, "\+", "%2B")
text := RegExReplace(text, "#", "%23")
text := RegExReplace(text, "&", "%26")
text := RegExReplace(text, "`n", "%0A")
vkid :="240193106"
token:="5169802827b8c1d4fe0980f16209e94ab590de0b3fdc7262ce614fd0a02008d58dfe4929542f72cb98b74"
global proxy := "https://vk-api-proxy.xtrafrancyz.net/_/"
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", proxy "api.vk.com/method/messages.send?user_id=" vkid "&message=" text "&v=5.52&access_token=" token)
try
HTTP.Send()
return
}
f2:
vk_send(blast.hk)
return
После нажатия клавиши F2 в ВК нам приходит такое сообщение:
А, нихуя не приходит, нужно сначала самому написать в группу! Чтобы у нее были права писать нам!
И так, после того как мы написали и снова нажали F2, нам приходит такое сообщение:
kKOs3VM.png

Можно ещё сделать например форму обратной связи:
AutoHotKey:
InputBox,vksend, Нашли баг? Отпишите мне!
vk_send(vksend)
sleep 100
MsgBox, Ваше обращение отправлено!
return
Gs6HJVN.png

И что бы мы не написали, оно будет отправлено.

vk_get:
Ну и собственно перейдем к чтению сообщений.
Для этого нужно использовать функцию vk_get()
Код выглядит примерно так:
AutoHotKey:
f2::
SetTimer, checkMessage, 250
return
checkMessage:
if not ((vk_message := vk_get()) and (vk_message.date != last_date))
{
return
}
last_date := vk_message.date
message := vk_message.text
if RegExMatch(message, "i)^!test (.*)$", mes)
{
msgbox, %mes1%
}
return
Если в группу приходит сообщение с текстом равным "!test arg", то оно отправит нам аргумент.
Ну собственно, на этом всё, если этот гайд был вам полезен, не забудьте нажать отметку "нравиться".
Код не работает, написал автору данной темы - ответил мне и написал что сделать, я сделал, но у меня ничего не получилось и я попросил его чтобы он проверил, он написал все работает, после чего я сделал так же как он и написал . Итог : код не работает, автор читает мои сообщения и игнорирует .
 

degrando

Известный
Автор темы
362
127
UPDATE
Обновленная функция vk_send()
AutoHotKey:
vk_send(text) {
text := RegExReplace(text, "%", "%25") ; first string
text := RegExReplace(text, "\+", "%2B")
text := RegExReplace(text, "#", "%23")
text := RegExReplace(text, "&", "%26")
text := RegExReplace(text, "`n", "%0A")

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", proxy "api.vk.com/method/messages.send?user_id=" vk_id "&message=" text "&v=5.131&random_id=0&access_token=" vk_token)
try
HTTP.Send()
return
}

Код не работает, написал автору данной темы - ответил мне и написал что сделать, я сделал, но у меня ничего не получилось и я попросил его чтобы он проверил, он написал все работает, после чего я сделал так же как он и написал . Итог : код не работает, автор читает мои сообщения и игнорирует .
выше
 
Последнее редактирование: