Напишем бот для ВК?

Как то пришло в голову собрать все полезные ссылки в одном месте, при том что бы ими мог воспользоваться любой человек. Вспомнил, что личка группы ВКонтакте можно сказать простаивает, и решил написать простенького бота, который будет выдавать нужные ссылки

Бот ВК с прошивками и другими полезными ссылками.

Так что сегодня мы напишем своего бота для группы ВКонтакте

В общем начал я с продумывания концептуальной части: Должно быть меню с кнопками выбора категории. Категориями служат «Прошивки», «Gapps», «Root» и «прочие». При нажатии на нужную категорию — выпадает выбор в данной категории. Каждая категория имеет свой цвет кнопок. А так же расположение кнопок должно быть таким, что бы смотрелось красиво. Красная кнопка назад снизу. При выборе, бот выдает ссылку и возвращает в главное меню.

Обзор на мобильном устройстве

Теперь нам нужно куда то разместить наш бот. Для этого необходим php хостинг. Так как бот мы будем писать на php, используя VK API. В прочем можно воспользоваться вот этим бесплатным хостингом на пробный период. Можно heroku, как использовать его. Либо же любым другим. А так же нам нужна админ-панель группы ВКонтакте. Включаем сообщения для бота:


Готово. Приступим к коду…


Бот будет состоять у нас из трех php файлов:

  • vk_api.php — файл со стандартными api. (Скачать)
  • conf.php — Файл настроек и кнопок
  • bot.php — основной файл бота

Создадим файл conf.php, куда зададим константы кнопок, и настроек:

<?php #php скрипт всегда с этого начинается
////SETTINGS////
const VK_KEY = ""; #сюда вставим ключ
const ACCESS_KEY = ""; #сюда вставим ответ
const VERSION = "5.89"; #версия vk api



#теперь константы кнопок, для удобства я сдеал табуляцию
#состоит из: 
#const название_кнопки = [["command" => 'название_кнопки'], "Надпись", "цвет"];
/////BUTTON/////
const BTN_PR = [["command" => 'BTN_PR'], "Прошивки", "green"];
	const BTN_LOS = [["command" => 'BTN_LOS'], "LineageOS", "green"];
	const BTN_LOSLOG = [["command" => 'BTN_LOSLOG'], "LineageOS log", "green"];
	const BTN_PE = [["command" => 'BTN_PE'], "Pixel Experience", "green"];
	const BTN_XS = [["command" => 'BTN_XS'], "Xiaomi Stok", "green"];
	const BTN_XF = [["command" => 'BTN_XF'], "Xiaomi Firmware", "green"];
	const BTN_GPU = [["command" => 'BTN_GPU'], "Adreno GPU Driver", "green"];
	
const BTN_GAPPS = [["command" => 'BTN_GAPPS'], "Google apps", "blue"];
	const BTN_OGAPSP = [["command" => 'BTN_OGAPSP'], "OpenGapps", "blue"];
	const BTN_NOG = [["command" => 'BTN_NOG'], "NikGApps (R)", "blue"];
	const BTN_MTG = [["command" => 'BTN_MTG'], "MindTheGapps", "blue"];
	const BTN_BTG = [["command" => 'BTN_BTG'], "BiTGApps", "blue"];
	const BTN_FLM = [["command" => 'BTN_FLM'], "FlameGapps", "blue"];
	
const BTN_ROOT = [["command" => 'BTN_ROOT'], "Root", "white"];
	const BTN_MR = [["command" => 'BTN_MR'], "Magisk Release", "white"];
	const BTN_MC = [["command" => 'BTN_MC'], "Magisk Canary", "white"];
	const BTN_LOSSU = [["command" => 'BTN_LOSSU'], "LOS root", "white"];
	const BTN_SUPERSU = [["command" => 'BTN_SUPERSU'], "SuperSU", "white"];
	
const BTN_PROG = [["command" => 'BTN_PROG'], "Программки", "green"];
	const BTN_YT = [["command" => 'BTN_YT'], "YouTube Vanced", "green"];
	const BTN_GC = [["command" => 'BTN_GC'], "Google Camera Mod", "green"];
	const BTN_mp3 = [["command" => 'BTN_mp3'], "VKmp3Mod", "green"];
	const BTN_coffee = [["command" => 'BTN_coffee'], "VK Coffee", "green"];
	const BTN_SBER = [["command" => 'BTN_SBER'], "SberBank", "green"];
	const BTN_INST = [["command" => 'BTN_INST'], "Instagram", "green"];
	const BTN_DD = [["command" => 'BTN_DD'], "Еще", "green"];

const BTN_EXIT = [["command" => 'EXIT'], "Назад", "red"];

С константами настроек разобрались.

Теперь перейдем к основному файлу bot.php:

<?php
include "vk_api.php"; #подключаем наши файлы
include "conf.php";

$vk = new vk_api(VK_KEY, VERSION); #указываем константы ключа и версии 
#закидываем в переменную "data" наш полученный json от ВК
$data = json_decode(file_get_contents('php://input')); 
if ($data->type == 'confirmation') {
    exit(ACCESS_KEY); #по запросу возращаем ответ
}
$vk->sendOK();

$peer_id = $data->object->peer_id; #узнаем id пользователя, что бы потом ему ответить
$message = $data->object->text; #считываем текст сообщения

if ($data->type == 'message_new') { 	
	switch ($message) {
        default: #по умолчанию (неизвестная команда)
			$vk->sendButton($peer_id, "Что такое??",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]); #бот отправляет сообщение "что такое??" и выводит кнопки главного меню
            break;
        case 'Прошивки': #если поступила команда "прошивки"
            $vk->sendButton($peer_id, "Какую прошивку хотите качнуть?",[[BTN_LOS, BTN_LOSLOG], [BTN_PE, BTN_GPU], [BTN_XS, BTN_XF], [BTN_EXIT]]);
            #отправляем вопрос "какую?" и выдаем кнопки вариантов
            break;
            case 'LineageOS': #далее по аналогии отправляем текстом ммылки и выводим нужные кнопки
                $vk->sendButton($peer_id, "https://download.lineageos.org",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
    		case 'LineageOS log':
                $vk->sendButton($peer_id, "https://www.lineageoslog.com/18.1",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'Pixel Experience':
    			$vk->sendButton($peer_id, "https://download.pixelexperience.org",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
    		case 'Xiaomi Stok':
    			$vk->sendButton($peer_id, "https://c.mi.com/oc/miuidownload/detail?guide=2",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
    			#$vk->sendButton($peer_id, "http://en.miui.com/a-234.html",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
    		case 'Xiaomi Firmware':
    			$vk->sendButton($peer_id, "https://xiaomifirmwareupdater.com",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
		case 'Adreno GPU Driver':
			$vk->sendButton($peer_id, "Google Drive: https://drive.google.com/drive/folders/1sizBYMR40G8cF8c0SatGLqpOrbML0tPb",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
            break;
        case 'Google apps':
			$vk->sendButton($peer_id, "Какие Gapps хотите скачать?",[[BTN_OGAPSP, BTN_NOG, BTN_FLM], [BTN_MTG, BTN_BTG], [BTN_EXIT]]);
            break;
            case 'OpenGapps':
    			$vk->sendButton($peer_id, "Сайт: https://opengapps.org
    			                            Тестовые сборки: https://sourceforge.net/projects/opengapps/files/arm64/test/",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'NikGApps':
    			$vk->sendButton($peer_id, "Сайт: https://nikgapps.com/
    			                            Свежие сборки: https://sourceforge.net/projects/nikgapps/files/Releases/NikGapps-R/",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'MindTheGapps':
    			$vk->sendButton($peer_id, "http://downloads.codefi.re/jdcteam/javelinanddart/gapps",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'BiTGApps':
    			$vk->sendButton($peer_id, "Сайт: https://bitgapps.github.io
    			                            Сборки: https://www.pling.com/p/1462970/#files-panel",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'FlameGapps':
    			$vk->sendButton($peer_id, "https://sourceforge.net/projects/flamegapps/files/arm64/",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
        case 'Root':
			$vk->sendButton($peer_id, "Выберите версию Magisk или другой root:",[[BTN_MR, BTN_MC], [BTN_LOSSU, BTN_SUPERSU], [BTN_EXIT]]);
            break;
            case 'Magisk Release':
    			$vk->sendButton($peer_id, "https://github.com/topjohnwu/Magisk/releases",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'Magisk Canary':
    			$vk->sendButton($peer_id, "https://cdn.jsdelivr.net/gh/topjohnwu/magisk-files@4f737b70868eb3f8b71e48518f919819cbf5ad63/app-debug.apk
    			                            json: https://raw.githubusercontent.com/topjohnwu/magisk-files/master/canary.json",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'LOS root':
    			$vk->sendButton($peer_id, "https://download.lineageos.org/extras",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'SuperSU':
    			$vk->sendButton($peer_id, "https://download.chainfire.eu/1220/SuperSU",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
        case 'Программки':
			$vk->sendButton($peer_id, "Выбирай:",[[BTN_YT, BTN_GC],[BTN_mp3, BTN_coffee],[BTN_SBER, BTN_INST,BTN_DD],[BTN_EXIT]]);
            break;
            case 'YouTube Vanced':
    			$vk->sendButton($peer_id, "Мод, без рекламы, с фоновым воспроизведением, чёрной темой и доп фунционалом:
    			https://vanced.app",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'Google Camera Mod':
    			$vk->sendButton($peer_id, "Тут собраны все модификации Google Camera:
    			https://www.celsoazevedo.com/files/android/google-camera/",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'VKmp3Mod':
    			$vk->sendButton($peer_id, "http://rebrand.ly/mp3_direct
    			Сайт: https://vkmp3mod.github.io
    			Еще более оптимизированная версия: https://yadi.sk/d/tJL7-L8wTfFdqw",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'VK Coffee':
    			$vk->sendButton($peer_id, "http://vkcoffee.operator555.su",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
            case 'SberBank':
                $vk->sendButton($peer_id, "БЛЯ, ПИЗДАТЫЙ МОД СБЕРА, ОТЧИЩЕН ОТ ВСЯКОГО ГОВНА
    			(в том числе антивирус, проверку рута, аналитики)
    			ХУЙ ВЫ ГДЕ ГДЕ НАЙДЕТЕ, ПОЭТОМУ ССЫЛКА В МОЕ ОБЛАКО:
    			https://yadi.sk/d/AeYmQkmt44aKNw",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
    		case 'Instagram':
    			$vk->sendButton($peer_id, "Крутые моды офф клиента:
    			https://4pda.ru/forum/index.php?showtopic=326697&st=16400#entry85767115
    			https://4pda.ru/forum/index.php?showtopic=326697&st=17480#entry87089452",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
    		case 'Еще':
    			$vk->sendButton($peer_id, "Больше модифткаций в teleram канале RGBcloud:
    			t.me/RGBcloud",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
                break;
			
		case 'Назад':
			$vk->sendButton($peer_id, "А теперь что?",[[BTN_PR, BTN_GAPPS, BTN_ROOT, BTN_PROG]]);
            break;
    }
} 

Почти всё. Осталось запустить и протестить… Загрузили:

Заходим в настройки сообщества => работа с API, создаем сервер в CallBack API:

Указываем ссылку на bot.php выбираем api 5.89, копируем наш ответ:

Вставляем ответ в наш файл conf.php и нажимаем кнопку подтвердить

Выставляем все галочки в типах событий, в разделе сообщения:

Теперь создаем ключ доступа:

Можем разрешить хоть всё, но главное сообщения:

Копируем ключ:

Вставляем в наш conf.php и сохраняем:

Проверяем:

Бот работает стабильно.

Так же, владея php, можно написать что угодно, всё зависит от вашей фантазии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *