86 lines
3.1 KiB
Plaintext
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);
|
|
});
|