Недавно, я решил встроить в один из своих скриптов некий Баг-Репорт, дабы можно было получать разную информацию о багах, и сразу решать их. Для этого, я решил использовать этот способ. Но, к сожалению, как только я вшил его в свой скрипт я понял, что мне он не очень сильно поможет, ибо заходить на хостинг ежедневно, и проверять "Нет ли новых сообщений" не очень удобно. Немного подумав, я решил использовать VK API, для того, чтобы получать сообщения прямо в ВК. Приступим. 1. Для начала нам следует создать фейковый аккаунт ВКонтакте, свой использовать крайне не рекомендую. 2. Далее, заходим на наш аккаунт ВКонтакте и получаем токен для него: получить токен Токен будет в ссылке наверху, вот пример: api.vk.com/blank.html#access_token=вот тут ваш токен&expires_in=0&user_id=ваш id вконтакте 3. Редактируем под себя следующий php-файл(к примеру, я назвал его bagreport.php). Так же, на всякий случай, я дублирую все сообщения в файл report.txt:
function sendMessage($id, $text2){ echo $id; global $access_token; file_get_contents("https://api.vk.com/method/messages.send?user_id=тут указываем Ваш id вк(куда будем получать сообщения)&message=AHK%20script:%20{$text2}&access_token={$access_token}"); } ?>
ВАЖНО: хостингер и аналогичные хостинги блокируют file_get_contents, скрипт работать не будет 4. Прекрасно, работа с php окончена. Заливаем наш файл на любой хостинг. К примеру, мой находится по адресу: site.ru/bagreport.php 5. Начинаем работу с самим AHK.
В самое начало скрипта добавляем строку:
Код
RegRead, TimeString, HKEY_CURRENT_USER, SoftWare\SAMP, timeofscr ;Для сравнения времени отправки сообщений
И в нужное место вставляем код:
Код
infaprobl = Распишите свою проблему в окошке ниже. `nЕсли Вы хотите получить ответ, оставьте любой способ связи с вами(Skype, ВК, почта, телефон).`nПри желании вы можете связаться со мной в ВК.`nИнтервал подачи проблем: около 10 минут. ;Текст, который будет отображаться в InputBox`e InputBox, problem, Сообщить о проблеме, %infaprobl% if ErrorLevel ;Если мы нажмем на кнопку отмены, скрипт не будет работать { MsgBox, 48, Отмена действия, Вы отменили Ваш запрос. } else { if problem = ;Если человек не ввел текст в окошко - сообщение не отправится { MsgBox, 16, Неудачно, Вы не ввели текст сообщения. } else { FormatTime, TimeString3, , MMdyyyyHHmm ;Получаем время компьютера пользователя TimeString2 := % TimeString + 10 ;Записываем в переменную TimeString2 время отправки сообщения и прибавку 10 минут(комментарий по этому поводу ниже) if TimeString3 > %TimeString2% ;Сравниваем время, если настоящее время больше, чем время прошлой отправки + 10 минут, то отправляем сообщение { URLDownloadToFile, http://site.ru/bagreport.php?Text=%problem%,%a_temp%/bagreport.php ;Отправка сообщения, site.ru/bagreport.php меняем на свое MsgBox, , Удачно, Отправлено следующее сообщение:`n%problem% FormatTime, TimeString, , MMdyyyyHHmm ;Запись времени отправки сообщения RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\SAMP ,timeofscr , %TimeString% ;И сохранение в реестр, дабы люди не пытались обмануть систему(комментарий тоже ниже) } else ;Если 10 минут не прошло - сообщение не будет отправлено { MsgBox, 16, Неудачно, 10 минут еще не прошло. } } } return ; Если сообщение будет отправлено в конце часа, то вначале следующего таймер сбросится, что не так важно. Эта проверка для того, чтобы вашего бота не заблокировали за очень большое кол-во сообщений Вам. ; Опять же, на то, чтобы поменять время в реестре уйдет около 30 секунд. За это время бот не будет сильно флудить, и вк его не заблокирует.
6. На этом все. Благодарю за чтение моего урока. by ZeusGang for CM. Код без использования php:
Код
infaprobl = Распишите свою проблему в окошке ниже. `nЕсли Вы хотите получить ответ, оставьте любой способ связи с вами(Skype, ВК, почта, телефон).`nПри желании вы можете связаться со мной в ВК.`nИнтервал подачи проблем: около 10 минут. ;Текст, который будет отображаться в InputBox`e InputBox, msg, Сообщить о проблеме, %infaprobl% id = id получателя token = ключ if ErrorLevel ;Если мы нажмем на кнопку отмены, скрипт не будет работать { MsgBox, 48, Отмена действия, Вы отменили Ваш запрос. } else { if msg = ;Если человек не ввел текст в окошко - сообщение не отправится { MsgBox, 16, Неудачно, Вы не ввели текст сообщения. } else { FormatTime, TimeString3, , MMdyyyyHHmm ;Получаем время компьютера пользователя TimeString2 := % TimeString + 10 ;Записываем в переменную TimeString2 время отправки сообщения и прибавку 10 минут(комментарий по этому поводу ниже) if TimeString3 > %TimeString2% ;Сравниваем время, если настоящее время больше, чем время прошлой отправки + 10 минут, то отправляем сообщение { VarSetCapacity(ansi, StrPut(msg, "UTF-8")), StrPut(msg, &ansi, "UTF-8") msg := StrGet(&ansi, "cp0") URLDownloadToFile, https://api.vk.com/method/messages.send?user_id=%id%&message=%msg%&access_token=%token%, %A_Temp%/msg.txt MsgBox, , Удачно, Отправлено следующее сообщение:`n%msg% FormatTime, TimeString, , MMdyyyyHHmm ;Запись времени отправки сообщения RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\SAMP ,timeofscr , %TimeString% ;И сохранение в реестр, дабы люди не пытались обмануть систему(комментарий тоже ниже) } else ;Если 10 минут не прошло - сообщение не будет отправлено { MsgBox, 16, Неудачно, 10 минут еще не прошло. } } } return ; Если сообщение будет отправлено в конце часа, то вначале следующего таймер сбросится, что не так важно. Эта проверка для того, чтобы вашего бота не заблокировали за очень большое кол-во сообщений Вам. ; Опять же, на то, чтобы поменять время в реестре уйдет около 30 секунд. За это время бот не будет сильно флудить, и вк его не заблокирует.
Сообщение отредактировал ZeusGang - Среда, 10.02.2016, 21:11
Я видел твои скрипты. пусть я и понимаю ахк, но все-таки не могу делать настолько качественную защиту. Сделать нормальную защиту для ахк-скрипта на чм может только 5-6 человек, а они явно смогут составить этот код без моей помощи. Дарить апи кей явно не есть хорошо, в моем варианте потерять апи кей без вскрытия хоста не возможно. Добавил в шапку код без php.