{"id":15133519,"url":"https://github.com/isa1vatore/vk-callback-bot","last_synced_at":"2025-10-28T10:03:42.871Z","repository":{"id":163529955,"uuid":"146074379","full_name":"iSa1vatore/vk-callback-bot","owner":"iSa1vatore","description":"Бот для сообществ VK на основе CallBack. Взаимодействие с клавиатурой, загрузка файлов.","archived":false,"fork":false,"pushed_at":"2019-05-21T19:43:48.000Z","size":59,"stargazers_count":22,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-28T10:02:58.612Z","etag":null,"topics":["callback","chatbot","php","php7","vk-api","vk-sdk","vkontakte-api"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iSa1vatore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-25T07:12:52.000Z","updated_at":"2023-09-20T21:55:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"45485c49-d4ef-4d5d-a7ad-a5593c1402f5","html_url":"https://github.com/iSa1vatore/vk-callback-bot","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":0.2068965517241379,"last_synced_commit":"710329e4b134ad1573f7a09b530464bb588615a3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iSa1vatore/vk-callback-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSa1vatore%2Fvk-callback-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSa1vatore%2Fvk-callback-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSa1vatore%2Fvk-callback-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSa1vatore%2Fvk-callback-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iSa1vatore","download_url":"https://codeload.github.com/iSa1vatore/vk-callback-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSa1vatore%2Fvk-callback-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281418054,"owners_count":26497723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["callback","chatbot","php","php7","vk-api","vk-sdk","vkontakte-api"],"created_at":"2024-09-26T05:01:19.995Z","updated_at":"2025-10-28T10:03:42.842Z","avatar_url":"https://github.com/iSa1vatore.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CallBack-бот для VK.\n\nВ этой библиотке есть все что вам потребуется для автоматического взаимодействия с пользователем в чате сообщества.\n\nДля настройки вам понадобится:\n1. Создать объект.\n```php\nrequire __DIR__.'/VKCallBackBot/VKCallBackBot.php';\n\n$bot = new VKCallBackBot([\n    'access_token' =\u003e 'ACCESS_TOKEN',\n    'confirmation_key' =\u003e 'CONFIRMATION',\n    'callback_secret' =\u003e 'SECRET', //Секретный ключ проверяется, если указан.\n    'fwdMessagesProcess' =\u003e true, //Берем команды из сообщений, которые переслал пользователь.\n    'WebServer' =\u003e 1, // 1 - nginx; 2 - apache.\n    'vAPI' =\u003e '5.92',\n]);\n```\naccess_token - Ключ доступа к сообществу, получается в настройках\u003eРабота c API\u003eКлючи доступа. Создаем и выдаем все нужные права после чего придет смс на телефон, вводим и получаем токен.\n\nconfirmation_key - Строка, которую должен вернуть сервер, находится в разделе \"CallBack API\".\n\ncallback_secret - Секретный ключ, в разделе \"CallBack API\" под него есть поле, вводим любые символы и сохраняем. Те же символы вводим и в конфиг объекта.\n\nWebServer - обязательно нужно указать, используется для того, чтобы отправить VK ответ и продолжить выполнение скрипта. Например если вы будете грузить большой фаил пользователю, то VK вывалит TimeOut на запрос и пошлет его повторно.\n\nВ разделе \"CallBack API\" выбираем версию 5.92 и указываем адрес, например https://example.com/index.php, но не нажимаем подтвердить :)\n\nДобавляем обработку событий после объекта:\n```php\nswitch ($bot-\u003eevent) {\n    case 'confirmation':\n    exit($bot-\u003econfirmation_key);\n    break;\n}\n```\n\nТеперь вы можете нажать кнопку \"Подтвердить\" и если все верно, то сервер установится.\n\nПо итогу у вас должен получиться примерно такой код:\n```php\nrequire __DIR__.'/VKCallBackBot/VKCallBackBot.php';\n\n$bot = new VKCallBackBot([\n    'access_token' =\u003e '632130721aa8da3183a02e885eef468947a1ac51139d3bee30c546ce118f23ab77f58e0918e08306bf00k',\n    'confirmation_key' =\u003e '7c5478f7',\n    'callback_secret' =\u003e '7c7c5478f7547c5478f778f7', //Секретный ключ проверяется, если указан.\n    'fwdMessagesProcess' =\u003e true, //Берем команды из сообщений, которые переслал пользователь.\n    'WebServer' =\u003e 1, // 1 - nginx; 2 - apache.\n    'vAPI' =\u003e '5.92',\n]);\n\nswitch ($bot-\u003eevent) {\n    case 'confirmation':\n        exit($bot-\u003econfirmation_key);\n        break;\n}\n```\n\nТеперь включим обработку сообщений от пользователя, для этого добавим обработку типа \"message_new\", так же не забудьте поставить обработку входящих сообщений во вкладке \"Типы событий\".\nОбязательно добавляем в конец файла функцию, которая отправит строку \"OK\", так VK поймет, что мы смогли ответить на событие и не будет отправлять его повторно.\n\n```php\nswitch ($bot-\u003eevent) {\n    case 'message_new':\n\n        //Обрабатывает сообщение пользователя и вводит нужные переменные.\n        $bot-\u003eMessageProcessing();\n\n        switch ($bot-\u003ecommand) {\n            case 'start':\n            case 'начать':\n                $bot-\u003emessage\n                    -\u003etext(\"Добро пожаловать!\")\n                    -\u003esend();\n                break;\n            default:\n                $bot-\u003emessage\n                    -\u003etext(\"Команда не найдена.\")\n                    -\u003esend();\n                break;\n        }\n\n    break;\n\n    case 'confirmation':\n        exit($bot-\u003econfirmation_key);\n        break;\n}\n\n$bot-\u003esendOK();\n```\n\nКоманда пользователя находится в переменной $bot-\u003ecommand она формируется из первого слова в сообщении, остальные слова помещаются по одному в массив $bot-\u003ecommandOptions.\n\nДалее мы видим обращение к объекту $bot-\u003emessage он нужен для отправки/удаления/редактирования сообщений.\nЧтобы отправить простое текстовое сообщение нужно выполнить след. команду:\n\n```php\n$bot-\u003emessage\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\n\nТакже можно прикрепить вложения:\n\nПрикрепление изображения:\n```php\n$bot-\u003emessage\n    -\u003eaddPhoto('photo137371466_325103360') //1 метод\n    -\u003eaddPhoto(137371466, 456239044) // 2 метод\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\nПрикрепление документа:\n```php\n$bot-\u003emessage\n    -\u003eaddDoc('doc-166966945_472727937') //1 метод\n    -\u003eaddDoc(-166966945, 472727937) // 2 метод\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\nПрикрепление видео:\n```php\n$bot-\u003emessage\n    -\u003eaddVideo('video277941697_456239037') //1 метод\n    -\u003eaddVideo(277941697, 456239037) // 2 метод\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\nПрикрепление аудиозаписи:\n```php\n$bot-\u003emessage\n    -\u003eaddAudio('audio137371466_456239655') //1 метод\n    -\u003eaddAudio(137371466, 456239655) // 2 метод\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\nПрикрепление записи:\n```php\n$bot-\u003emessage\n    -\u003eaddWall('wall137371466_2811') //1 метод\n    -\u003eaddWall(137371466, 2811) // 2 метод\n    -\u003etext(\"Текст\")\n    -\u003esend();\n```\n\nДобавление клавиатуры:\n```php\n$bot-\u003emessage\n    -\u003ekeyboard()\n    -\u003erow()\n    -\u003ebutton('Кнопка 1 в первом ряду', 'positive', ['command' =\u003e 'start'])\n    -\u003ebutton('Кнопка 2 в первом ряду', 'positive', ['iSa1vatore' =\u003e 'Sexy boy'])\n    -\u003erow()\n    -\u003ebutton('Кнопка 1 во втором ряду', 'positive', [])\n    -\u003ebutton('Кнопка 2 во втором ряду', 'positive', [])\n    -\u003erow()\n    -\u003ebutton('Кнопка 1 третьем ряду', 'positive', ['command' =\u003e 'sendAttach', 'parametr' =\u003e 5])\n    -\u003eone_time() //false by default\n    -\u003etext(\"Клацни на кнопошку\")\n    -\u003esend();\n```\n\nДля создания массива клавиатуры вызовите -\u003ekeyboard()\n\nДля создания ряда используйте -\u003erow()\n\nДля создания кнопки используйте -\u003ebutton(Название, Цвет, массив который будет передан в payload)\n\nУ кнопок может быть один из 4 цветов: \n1. primary — синяя кнопка, обозначает основное действие. #5181B8 \n2. default — обычная белая кнопка. #FFFFFF \n3. negative — опасное действие, или отрицательное действие (отклонить, удалить и тд). #E64646 \n4. positive — согласиться, подтвердить. #4BB34B\nЕсли передать \"command\" в payload, то именно эта команда попадет в переменную $bot-\u003ecommand. (Кнопка 1 в первом ряду)\n\nПосле того как вы сформировали клавиатуру добавьте -\u003eone_time() эта функция сформирует клавиатуру. В неё также можно передать параметр true, тогда клавиатура удалится у пользователя как только он ей воспользуется.\n\nЕсли вам нужно передавать одинаковую клавиатуру сразу в нескольких условиях, то вы можете поместить её в переменную.\n\nПомещение клавиатуры в переменную и отправка:\n```php\n$defaultKeyboard = $bot-\u003emessage\n-\u003ekeyboard()\n    -\u003erow()\n    -\u003ebutton('Кнопка 1', 'primary', ['command' =\u003e 'clickbutton', 'parametr' =\u003e 1])\n    -\u003ebutton('Кнопка 2', 'primary', ['command' =\u003e 'clickbutton', 'parametr' =\u003e 2])\n    -\u003erow()\n    -\u003ebutton('Кнопка 3', 'positive', ['thisbutton' =\u003e 3])\n    -\u003ebutton('Кнопка 4', 'positive', ['thisbutton' =\u003e 4])\n    -\u003eone_time() //false by default\n    -\u003egetKeyboard(); //getKeyboard возвращает строку.\n\n$bot-\u003emessage\n    -\u003etext(\"Добро пожаловать!\")\n    -\u003esetKeyboard($defaultKeyboard) //setKeyboard добавляет клавиатуру из переменной.\n    -\u003esend();\n```\nЧтобы удалить сообщение вызовите метод delete у объекта message передав в параметр ID сообщения.\n\n```php\n$mid = $bot-\u003emessage-\u003etext(\"Меня удалят, вот же бля(\")-\u003esend();\n\n$bot-\u003emessage-\u003edelete($mid);\n```\n\nДля редактирования сообщения используйте метод edit вместо send, но передав ID сообщения.\nТакже добавить вложения.\n\n```php\n$mid = $bot-\u003emessage-\u003etext(\"Ghbdtn!\")-\u003esend();\n\n$bot-\u003emessage-\u003etext(\"Привет!\")-\u003eedit($mid);\n```\n\nЗагрузка файлов (Думаю, примера кода будет достаточно):\n```php\n$bot-\u003emessage-\u003etext(\"Началась загрузка файлов!\")-\u003esend();\n\t\t\t\t\n//Передаю параметр false, тем самым не прекращая работу скрипта, а VK получает ответ \"ok\".\n//Рекомендую использовать когда пользователю нужно отправить большой фаил и нужно чтобы VK не выбил TimeOut.\n$bot-\u003esendOK(false);\n\n//Загрузка фото\n$uploadPhoto = $bot-\u003eapi-\u003euploadPhoto(__DIR__.'/assets/image.jpg');\n\nif(isset($uploadPhoto['id'])) {\n    $bot-\u003emessage\n        -\u003eaddPhoto($uploadPhoto['oid'], $uploadPhoto['id'])\n        -\u003esend();\n} else {\n  $bot-\u003emessage-\u003etext(\"Возникла ошибка при загрузке.\")-\u003esend();\n}\n\n//Загрузка документа\n$uploadDoc = $bot-\u003eapi-\u003euploadDoc(__DIR__.'/assets/file.txt', 'Название');\n\nif(isset($uploadDoc['id'])) {\n    $bot-\u003emessage\n        -\u003eaddDoc($uploadDoc['oid'], $uploadDoc['id'])\n        -\u003esend();\n} else {\n  $bot-\u003emessage-\u003etext(\"Возникла ошибка при загрузке.\")-\u003esend();\n}\n\n//Загрузка голосового сообщения\n$uploadVoice = $bot-\u003eapi-\u003euploadVoice(__DIR__.'/assets/click_audio.wav');\n\nif(isset($uploadVoice['id'])) {\n    $bot-\u003emessage\n        -\u003eaddDoc($uploadVoice['oid'], $uploadVoice['id'])\n        -\u003esend();\n} else {\n  $bot-\u003emessage-\u003etext(\"Возникла ошибка при загрузке.\")-\u003esend();\n}\n```\n\nПример бота созданного на этой основе: https://vk.com/vkbotbyisa1vatore\n\nИсходный код этого бота: https://github.com/iSa1vatore/vk-callback-bot/tree/master/example\n\nПо вопросам и предложениям пишите мне в VK: https://vk.com/s9008\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisa1vatore%2Fvk-callback-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisa1vatore%2Fvk-callback-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisa1vatore%2Fvk-callback-bot/lists"}