[Delphi] Работа VKAPI, на примере бота

  • Автор темы m0nr
  • Дата начала
M

m0nr

Original poster
Unit Hi2All; {Привет всем. Сейчас я покажу как работать с VKAPI через DELPHI, на примере бота, автоматически принимающего заявки в закрытую группу.}
Var
Delphi: Любая_версия;​
Руки: Две; //Можно справиться ногами, ибо код весь дам.
Интернет: С_хорошим_соединением; //Для исключения провисаний сети при работе
Begin
File>New>VCL Form Application; //Создаём новый проект
Кидаем на форуму TLabel, TMemo, TTimer, TidHTTP, TIdServerIOHandlerSSLOpenSSL;​
Сохраняем проект в отдельную папку, и компилируем его;​
Залезаем в папку с проектом и ищем файл, который выходит после компиляции, и рядом с ним кладём библиотеки libeay32.dll ssleay32.dll; //без этого VKAPI не даст доступ из-за SSL
{Теперь, когда подготовка проекта завершена - можно приступать к коду}
Для начала объявим глобальные переменные и константы, для лёгкости в обращении к ним;​

  1. id:string;
  2. i:Integer;
  3. const gid = 'ID_ГРУППЫ';
  4. const token = 'ТОКЕН_ЛЮБОГО_АДМИНИСТРАТОРА_ГРУППЫ';
{ т.к. я показываю самый примитивный способ работы с VKAPI, тут не будет показан способ получения токена, авторизацией через login;pass. Об этом позже
Теперь непосредственно сам код проверки на наличие заявки, в виде процедуры }
procedure getRequest; //Объявление процедуры "getRequest"
var response: string; //переменная для получения ответов
begin
response:=Form1.IdHTP1.get('

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

'
+gid+'&access_token='+token+'&count=1&v=5.92'); //Запрос к VKAPI
id := Pars ('[', response, ']'); //Получаем значение id из полученного ответа, эту функцию можно взять из кода который будет ниже, либо в интернете
if id <> '' then approveRequest ; //Если значение id не пустое, вызываем процедуру подтверждения заявки
end;
{
Теперь разберём запрос к VKAPI.
--

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

- это метод VKAPI (Для ознакомления - кликабельно)
--
group_id='+gid+'
group_id - параметр, отвечающий за передачу ID группы
gid - Константа, содержащая ID группы
--
& - знак, отделяющий параметры
--
access_token='+token+'
access_token - параметр, содержащий токен доступа
token - Константа, в которой токен администратора
--
count=1&v=5.92
Count=1 - Количество получаемых заявок за запрос, в данном случае одна
v=5.92 - Версия VKAPI, смотрите в методах, к какой версии обращаться
}
procedure approveRequest;​
var Response: string;
time : Extended;​
begin
time := (Now)/(24*60*60);​
Response:=Form1.idhtp1.Get('

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

'
+gid+'&user_id='+id+'&access_token='+token+'&v=5.92');​
Form1.Memo1.lines.Add('['+FormatDateTime('hh:nn:ss', Now)+'] Принята заявка'); Inc(i);​
Form1.Label1.Caption:='Заявок принято : '+inttostr(i);​
end;
{Тут абсолютно тот-же принцип}
Настраиваем таймер на интервал ~2500 (2.5 сек);​
Ставим вызов процедуры getRequest на таймер;​

{
В итоге получаем нечто такое:
Посмотреть вложение 8495
}

Весь код;
Код:
var
  Form1: TForm1;
  id:string;
  i:Integer;
  const gid   = '17***0**7';
  const token = '135de8e143d99a5da1c16*****e8dfbeae9e*******************1c7ca8f52622b**********63';
implementation
{$R *.dfm}
function Pars(T_, ForS, _T: string): string;
var a, b:integer;
begin
  Result := '';
  if (T_='') or (ForS='') or (_T='') then Exit;
  a:=Pos(T_, ForS);
  if a=0 then Exit else a:=a+Length(T_);
  ForS:=Copy(ForS, a, Length(ForS)-a+1);
  b:=Pos(_T, ForS);
  if b>0 then
  Result:=Copy(ForS, 1, b - 1);
end;

procedure approveRequest;
var Response: string;
    time : Extended;
begin
    time := (Now)/(24*60*60);
    Response:=Form1.idhtp1.Get('https://api.vk.com/method/groups.approveRequest?group_id='+gid+'&user_id='+id+'&access_token='+token+'&v=5.92');
    Form1.sMemo1.lines.Add('['+FormatDateTime('hh:nn:ss', Now)+'] Принята заявка');   Inc(i);
    Form1.sLabel1.Caption:='Заявок принято : '+inttostr(i);
end;

procedure getRequest;
var response: string;
begin
  response:=Form1.IdHTP1.get('https://api.vk.com/method/groups.getRequests?group_id='+gid+'&access_token='+token+'&count=1&v=5.92');
  id := Pars  ('[', response, ']');
  if id <> '' then approveRequest ;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
getRequest;
end;

{На написание сие гайда, и оформление ушло куча времени - но я доволен результатом}

End.
 
Последнее редактирование модератором:
M

m0nr

Original poster
Так-с, закончил писать VKApi на Indy.
Навел красоту в коде - работает без запинок, в отличии от прошлых версий на Synapse.
Готов поделиться, однако вопрос в том - нужно ли это вообще тут?
Пример полностью рабочего софта на этом апи, авторизация идёт через верифицированное приложение в вк, с бесконечным токеном.
Посмотреть вложение 8526
 
  • Like
Реакции: Dare_Vulture
M

m0nr

Original poster
Так-с. Поделюсь немного результатами работы над VKApi.
Всё то-же приложения автопринятия заявок в закрытую группу, в роли примера.
Посмотреть вложение 8594
Добавлена полная поддержка двухфакторной аутентификации, а так-же авторизации по токену.
--
А теперь тот самый софт, о котором была речь - про мини вк клиент с аналоговым способом авторизации через токен, с возможным дампом профиля:
Посмотреть вложение 8595 Посмотреть вложение 8596 Посмотреть вложение 8597 Посмотреть вложение 8598

Да, сообщения сейчас выглядят стрёмно, но работа над этим ведётся. Один из вариантов оформления сейчас такой:
Посмотреть вложение 8599
Связь со мной

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
  • Like
Реакции: Dare_Vulture и Псина1
M

Max245

Original poster
Интересно, есть идеи как можно раскрутить группу
 
Название темы
Автор Заголовок Раздел Ответы Дата
A Delphi. Урок 14. Работа со списками строк TStringList или «сложные» типы С/C++ 0
A Delphi. Урок 13. Работа со строками С/C++ 0
A Delphi для начинающих. Урок 10. Циклы. Работа с массивами С/C++ 0
A Delphi для начинающих – Урок 4 – Работа с переменными С/C++ 0
C Реверс-инжирниринг бота на Delphi, есть проблемы Вопросы и интересы 0
T Пишем WinLocker на Delphi С/C++ 0
D Нужна помощь по Delphi! ЗАПЛАЧУ! Другие ЯП 1
VAVAN Продам исход стиллера (ЯП Delphi) Продажа софта 1
A Потоки в Delphi. TThread С/C++ 0
A Delphi. Урок 17. Типы С/C++ 0
A Delphi. Урок 16. Исключительные ситуации С/C++ 0
A Delphi. Урок 15. Математические операции С/C++ 0
A Delphi. Урок 12. Преобразование числа в строку и строки в число С/C++ 0
A Delphi для начинающих. Урок 11. Процедуры и функции С/C++ 0
A Delphi для начинающих – Урок 9 – Массивы С/C++ 0
A Delphi для начинающих – Урок 8 – Условия. Оператор Case С/C++ 0
A Delphi для начинающих – Урок 7 – Условия. Оператор IF С/C++ 0
A Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
A Delphi для начинающих – Урок 5 – Работаем с компонентами С/C++ 0
A Delphi для начинающих – Урок 3 – Создание переменных С/C++ 0
A Delphi для начинающих – Урок 2 — События С/C++ 0
A Delphi для начинающих — Урок 1 — Среда разработки Delphi С/C++ 0
A Простые шутку в DELPHI С/C++ 5
A Мои старые исходники на Delphi С/C++ 1
A Несколько шпор по Delphi =) С/C++ 3
L Загружаем компьютер другу. Delphi,rad studio Другие ЯП 0
I Country IP Ranges Generator v1.0 [Source][Delphi] Другие ЯП 3
B Помощь [Delphi] Другие ЯП 0
B VK Post Grabber [Source][Delphi] Другие ЯП 0
Admin [delphi] downloader winapi Другие ЯП 0
M Работа на выгодных условиях без особого труда. Предоставляю работу. Ищу специалиста. 0
M Работа для соискателей из РФ и РБ. Предоставляю работу. Ищу специалиста. 1
I Работа, разные рутинные задачи: постинг / переговоры / поиск Предоставляю работу. Ищу специалиста. 8
cheese Интересно Работа по РУ и СНГ Ищу работу. Предлагаю свои услуги. 1
L Работа Предоставляю работу. Ищу специалиста. 0
S Работа для всех Предоставляю работу. Ищу специалиста. 0
Dobermаnn Работа для дроповодов Предоставляю работу. Ищу специалиста. 0
F Работа для всех Предоставляю работу. Ищу специалиста. 0
C Набор в команду(Работа онлайн) Предоставляю работу. Ищу специалиста. 2
P Работа Корзина 2
K [Работа] - сотрудники Банков/гос.учреждений/сот.операторов Предоставляю работу. Ищу специалиста. 2
W Работа онлайн в команде Предоставляю работу. Ищу специалиста. 2
A Доброго времени суток! Разработаем сайт для сети onion/ зарегистрируем onion домен. Работа под ключ. Ищу работу. Предлагаю свои услуги. 1
M Набор сотрудников(Работа онлайн) Предоставляю работу. Ищу специалиста. 0
C Работа поиск форумов - Легально Предоставляю работу. Ищу специалиста. 2
K Работа онлайн в команде. Предоставляю работу. Ищу специалиста. 0
T Работа менеджером по продажам удаленно Предоставляю работу. Ищу специалиста. 1
O Работа онлайн в команде. Предоставляю работу. Ищу специалиста. 0
C Работа, любые страны. На каждый день Предоставляю работу. Ищу специалиста. 2
S Работа в команде(online) Предоставляю работу. Ищу специалиста. 0

Название темы