VKBot
Оболочка ВК/VK ботов для FreePascal/Lazarus
- Active · last change 11-3-2026
- ★ 1 on GitHub
README
VKBot RT — обёртка для VK-ботов на FreePascal/Lazarus
vkbot_rt — runtime-пакет для создания ботов ВКонтакте на FreePascal/Lazarus.
Библиотека покрывает два основных сценария:
- Long Poll API (бот сам опрашивает VK API);
- Callback API / Webhook (ваш HTTP-сервер принимает события от VK).
Что есть в репозитории
src/vkbotframework.pas— базовый классTVKBot, обработка команд/событий, отправка сообщений, клавиатуры.src/vkwebhook.pas— процессор webhook-запросов (TVKWebhookProcessor) с валидациейsecretиgroup_id.src/vktypes.pas— типы событий, уровни логирования, константы API и структуры ответов webhook.examples/longpoll— примеры консольных ботов в режиме Long Poll (включая полный цикл загрузки файла и отправки пользователю).examples/webhook— примеры интеграции сfpWebи Brook.tests— unit- и интеграционные тесты наfpcunit.
Возможности
1) Команды и маршрутизация сообщений
- Регистрация команд через
CommandHandlers['start'] := @Handler; - Поддержка аргументов команды (
/echo привет мир→ массив аргументов). - Дополнительные «глобальные» обработчики сообщений (
AddMessageHandler).
2) Обработчики событий VK
- Enum
TVKEventTypeдля типизированной подписки на события (напримерetWallPostNew). - Поддержка подписки как по enum, так и по имени события.
3) Отправка, редактирование и удаление сообщений
- Отправка через
SendMessageи методыTVKMessage.Reply/Send. SendMessageGetID— та же отправка, но возвращаетmessage_idнового сообщения (нужен для последующих правок/удалений).- Медиа-вложения:
UploadPhoto(фото),UploadDoc(документы и голосовыеaudio_message),UploadVideo(нативное видео сообщества черезvideo.save) возвращают строку вложения (photo|doc|video<owner>_<id>), пригодную дляSendMessage/EditMessageчерез параметрattachment. - Редактирование через
EditMessage. - Удаление через
DeleteMessage(VK APImessages.delete, есть перегрузка для одного и несколькихmessage_id, опциональноdelete_for_all). - Построитель клавиатур
TVKKeyboard:- кнопки с цветами (
primary,secondary,negative,positive), - payload,
- новые строки,
- one_time и inline.
- кнопки с цветами (
4) Webhook-обработка
TVKWebhookProcessor.ProcessWebhook:- разбирает JSON,
- отвечает на
confirmation, - валидирует
secretиgroup_id, - передаёт событие в
TVKBot.ProcessUpdate, - возвращает HTTP-статус и текст (
ok/ошибка).
Быстрый старт (Long Poll)
Минимальная схема:
- Создать экземпляр
TVKBotс токеном сообщества иgroup_id. - Зарегистрировать обработчики команд.
- При необходимости подключить логирование (
OnLog). - Вызвать
Start.
Смотрите рабочий пример: examples/longpoll/VKBotExample.pas.
Пример регистрации команд
_Bot := TVKBot.Create('YOUR_TOKEN_HERE', 123456789);
_Bot.CommandHandlers['start'] := @_Handler.OnStart;
_Bot.CommandHandlers['help'] := @_Handler.OnHelp;
_Bot.CommandHandlers['echo'] := @_Handler.OnEcho;
_Bot.Start;Быстрый старт (Webhook)
Библиотека не привязана к одному web-фреймворку. В репозитории есть два примера:
examples/webhook/vkbot_fpweb_demo.pasexamples/webhook/vkbot_brook_demo.pas
Общая схема:
- Создать
TVKBot. - Создать
TVKWebhookProcessorс confirmation-кодом и secret. - В HTTP-обработчике передавать body запроса в
ProcessWebhook. - Вернуть в HTTP-ответ:
Code := result.HTTPStatusContent := result.Content
Подключение в Lazarus
- Откройте пакет
vkbot_rt.lpkв Lazarus. - Подключите к проекту.
- Укажите юниты:
uses VKTypes, VKBotFramework, VKWebhook;Логирование
Используйте событие OnLog в TVKBot (и/или у TVKWebhookProcessor) для вывода диагностических сообщений. Уровни:
Тесты
В репозитории есть:
- тесты сообщений и клавиатур,
- тесты обработки команд и событий,
- тесты API-вызовов,
- webhook-тесты.
Ограничения и заметки
- Реализация ориентирована на актуальную версию VK API, заданную константой
VK_API_VERSION(в исходниках сейчас5.199). - Для работы webhook необходимо корректно настроить Callback API в панели сообщества VK (URL, confirmation code, secret).
Лицензия
MIT (см. файл LICENSE).

