diff --git a/mirzaev/vk/robot/bobby/system/public/index.php.template b/mirzaev/vk/robot/bobby/system/public/index.php.template index 63c2a63..5c1536f 100644 --- a/mirzaev/vk/robot/bobby/system/public/index.php.template +++ b/mirzaev/vk/robot/bobby/system/public/index.php.template @@ -42,24 +42,52 @@ $database->truncate(); $chat = new chat; // Инициализация команды "ролевое действие" -$chat->pattern('/\*([A-я\w\s]+)\*/', new command(function (array $update, string $text) use ($robot) { +$chat->pattern('/(*UTF8)\*([A-я\w\s]+)\*/', new command(function (array $update, string $text) use ($robot) { try { // Удаление сообщения $robot->message()->delete($update['object']['message']['conversation_message_id'], $update['object']['message']['peer_id']); } catch (Exception $e) { } - // Инициализация данных отправителя + // Конвертация кодировки текста сообщения + // $text = mb_convert_encoding($text, 'UTF-8'); + + // Инициализация данных аккаунта отправителя $sender = $robot->user()->get($update['object']['message']['from_id']); - // Отправка ответа - $robot->message($update['object']['message']['peer_id'], "@id$sender->id ($sender->first_name) $text"); + if (isset($update['object']['message']['reply_message'])) { + // Найдено сообщение для ответа + + // Инициализация данных аккаунта отправившего сообщение для ответа (получателя) + $receiver = $robot->user()->get($update['object']['message']['reply_message']['from_id']); + + // Поиск падежей для получателя + preg_match_all('/(*UTF8)\s\|([А-я\w]+)$/', $text, $matches); + + // Инициализация падежа получателя + $receiver_case = $matches[1][0]; + + // Инициализация цели для ролевого действия + $target = " @id$receiver->id ($receiver->first_name$receiver_case)"; + } else $target = ''; + + // Поиск падежей для отправителя + preg_match_all('/(*UTF8)^\|([А-я\w]+)\s/', $text, $matches); + + // Инициализация падежа отправителя + $sender_case = $matches[1][0]; + + // Удаление команд падежей из строки + $text = preg_replace('/(*UTF8)\s?\|[А-я\w]+\s?/', '', $text, 500); + + // Отправка сообщения с ролевым действием + $robot->message($update['object']['message']['peer_id'], "@id$sender->id ($sender->first_name$sender_case) $text$target"); })); $longpoll->handle(function (array $update) use ($robot, $database, $chat) { // Обработка события - // var_dump($update); + var_dump($update); // Сохранение события в базе данных // $database->save($update);