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).
3) Отправка сообщений и клавиатуры
- Отправка через SendMessage и методы TVKMessage.Reply/Send.
- Построитель клавиатур TVKKeyboard:
- кнопки с цветами (primary, secondary, negative, positive),
- payload,
- новые строки,
- one_time и inline.
5) Тестируемость
Быстрый старт (Long Poll)
Минимальная схема:
- Создать экземпляр TVKBot с токеном сообщества и group_id.
- Зарегистрировать обработчики команд.
- При необходимости подключить логирование (OnLog).
- Вызвать Start.
Пример регистрации команд
Код: Выделить всё
_Bot := TVKBot.Create('YOUR_TOKEN_HERE', 123456789);
_Bot.CommandHandlers['start'] := @_Handler.OnStart;
_Bot.CommandHandlers['help'] := @_Handler.OnHelp;
_Bot.CommandHandlers['echo'] := @_Handler.OnEcho;
_Bot.Start;
Библиотека не привязана к одному web-фреймворку. В репозитории есть два примера:
- examples/webhook/vkbot_fpweb_demo.pas
- examples/webhook/vkbot_brook_demo.pas
- Создать TVKBot.
- Создать TVKWebhookProcessor с confirmation-кодом и secret.
- В HTTP-обработчике передавать body запроса в ProcessWebhook.
- Вернуть в HTTP-ответ:
- Code := result.HTTPStatus
- Content := result.Content
- Откройте пакет vkbot_rt.lpk в Lazarus.
- Соберите пакет.
- Подключите юниты:
Код: Выделить всё
uses
VKTypes, VKBotFramework, VKWebhook;
Используйте событие OnLog в TVKBot (и/или у TVKWebhookProcessor) для вывода диагностических сообщений. Уровни:
Тесты
В репозитории есть:
- тесты сообщений и клавиатур,
- тесты обработки команд и событий,
- тесты API-вызовов,
- webhook-тесты.
- tests/console_test.lpi
- tests/gui_test.lpi
- Реализация ориентирована на актуальную версию VK API, заданную константой VK_API_VERSION (в исходниках сейчас 5.199).
- Для работы webhook необходимо корректно настроить Callback API в панели сообщества VK
(URL, confirmation code, secret). - Для production стоит добавить собственные retry/monitoring/ограничение частоты запросов на уровне приложения.
MIT (см. файл LICENSE).
