Бот за изпращане на съобщения от Telegram до VK и обратно

Вече сме написали бот за Telegram за обратна връзка с уебсайтове и процесът на създаване е описан в статията Telegram бот за обратна връзка с уебсайтове. Днес ще анализираме характеристиките на бота за VKontakte и ще подобрим GCBot. За Telegram се създава по аналогия с предишната статия.

Нека създадем група във VK, ще я имаме Remailbot. Включете съобщенията в настройките на групата. По-нататък в раздела Работа с API. Щракваме, за да създадем ключ и да разрешим достъп до съобщенията. Копирайте създадения токен и го поставете в config.php в $tokenVK. Трябва ни и база данни, попълнете $db_host, $db_user, $db_password, $db_name.

Да се ​​върнем към настройките на групата, в секцията Работа с API има втори раздел API за обратно извикване. Посочете пътя до vk.php в адреса на вашия сървър. За потвърждение VK ще изпрати заявка до vk.php с данните: , а по-долу е низът, който сървърът трябва да върне. Копирайте го и го поставете във vk.php в $confirmation_token. Посочваме също $key. В настройките на същия раздел има подраздел: типове събития, премахнете отметките от всички квадратчета и поставете само срещу: ново съобщение.

Планът ще бъде следният: Използвайки командата /connect, изпращаме връзка към профила на противоположната мрежа, запазваме я в базата данни, веднага щом се направи подобна команда от този профил с връзка към профила на първата мрежа, създаваме връзка. След това, когато изпращаме повторно съобщение до бота, ние го изпращаме до друга мрежа.

Има потребител, имаме нужда от командата /connect, ще я дефинираме в commands.php в масива $commands

Имаме и командата /cancel, която има предимство пред другите команди. Изтрива next_command.

След това трябва да запомним всички промени, за това ще използваме функция като before_command, извиквана само след основната команда. Добавихме това към GCBot, ние също го посочваме в конфигурациятаслед_команда. Към него ще бъде прехвърлено и името на основния отбор.

След като изпратим данните за вход, ние ги добавяме към временната таблица и информираме потребителя, че ще изпрати данните за вход от текущата мрежа от друга мрежа. Веднага щом записите, които се препращат един към друг, се появят в таблицата, ние формираме връзка.

Сега препращане, това вече не е команда. Така че ние посочваме в конфигурацията default_command = 'remail'

Самият remail трябва да провери дали няма връзка, след това да извика командата за помощ или да изпрати съобщението до друга мрежа. Тъй като оригиналните имат различен формат, в tg.php и vk.php ще създадем функцията getMsg (), която трябва да получи препратеното съобщение от $response, да изгради желания формат и да върне обикновен текст. Този текст е изпратен до друга мрежа.

VKontakte счита командата за успешна, ако отговорът е ОК. Ако VC не получи положителен отговор, той ще изпрати отново тази команда по-късно.

След пренаписването на бота, GCBot е актуализиран до 0.2.

Създаденият от нас бот се нарича Remail, добавете го към VK и Telegram.