vk-robot-bobby/mirzaev/vk/robot/bobby/system/public/index.php.template

86 lines
3.1 KiB
Plaintext

<?php
declare(strict_types=1);
// Файлы проекта
use mirzaev\vk\robot\bobby\programs\roleplay_action,
mirzaev\vk\robot\bobby\programs\character_escaping,
mirzaev\vk\robot\bobby\programs\reply_to_group,
mirzaev\vk\robot\bobby\programs\mentions_converter,
mirzaev\vk\robot\bobby\programs\variables,
mirzaev\vk\robot\bobby\programs\buttons_generator,
mirzaev\vk\robot\bobby\programs\postprocessor;
// Фреймворк ВКонтакте
use mirzaev\vk\core,
mirzaev\vk\api\longpoll;
// Фреймворк ArangoDB
use mirzaev\arangodb\connection;
// Модуль ArangoDB для фреймворка ВКонтакте
use mirzaev\vk\arangodb\longpoll as database;
// Модуль чат-робота для фреймворка ВКонтакте
use mirzaev\vk\chat\core as chat;
// Инициализация
defined('SYSTEM_PATH_ROOT') or define('SYSTEM_PATH_ROOT', __DIR__ . '/../');
defined('SYSTEM_PATH_PUBLIC') or define('SYSTEM_PATH_PUBLIC', __DIR__);
// Подключение автозагрузчика
require SYSTEM_PATH_ROOT . '../../../../../vendor/autoload.php';
// Инициализация ядра
$core = core::init();
// Инициализция робота
$robot = $core->group(217012993)->key('');
// Инициализация обработчика LongPoll API
$longpoll = new longpoll($robot);
// Инициализация базы данных ВКонтакте
$vk = new database(new connection(require SYSTEM_PATH_ROOT . 'settings/vk.php'));
// Инициализация базы данных Бобби
$bobby = new database(new connection(require SYSTEM_PATH_ROOT . 'settings/bobby.php'));
// Очистка базы данных ВКонтакте (тестирование)
$vk->truncate();
// Очистка базы данных Бобби (тестирование)
$bobby->truncate();
// Инициализация модуля "чат-робот"
$chat = new chat;
// Инициализация программы "экранирование символов"
$chat->command('/(*UTF8)\\\[^\\\]|[^\\\]+/', new character_escaping($robot));
// Инициализация программ: "ответ на сообщение группы", "конвертация упоминаний" и "переменные"
$chat->command(
'/(*UTF8)^.*$/',
new reply_to_group($robot),
new mentions_converter($robot)
);
// Инициализация программы "переменные"
$chat->command('/(*UTF8)^\(.*\)$/', new variables($robot));
// Инициализация программы "ролевое действие"
$chat->command('/(*UTF8)^\*([^\*]*)\*(?=\n|\r|$|\s*\[|\s*\()/', new roleplay_action($robot));
// Инициализация программы "генератор кнопок"
$chat->command('/(*UTF8){.+\*[^}]+\*}/', new buttons_generator($robot));
$longpoll->handle(function (array $update) use ($robot, $vk, $bobby, $chat) {
// Обработка события
// Сохранение в базе данных
$vk->save($update);
// Обработка команды
$chat->handle($update);
});